JavaScript中与C语言的strncmp函数(比较字符串长度)相当的函数是什么?

6
JavaScript中是否有与C函数strncmp相当的功能? strncmp需要两个字符串参数和一个整数length参数。 它将比较最多length个字符的两个字符串,并确定它们在length范围内是否相等。JavaScript中是否有相应的内置函数?
6个回答

11

你可以很容易地构建该函数:

function strncmp(str1, str2, n) {
  str1 = str1.substring(0, n);
  str2 = str2.substring(0, n);
  return ( ( str1 == str2 ) ? 0 :
                              (( str1 > str2 ) ? 1 : -1 ));
}

函数末尾三目运算符的替代方案可以是使用localeCompare方法,例如return str1.localeCompare(str2);


1
我构建它的方式有点不同,但还是谢谢。只是想确保我没有重复造轮子。 - Daniel Bingham
实际上它并不等同于C函数(它只返回0、-1或1,而C函数返回更多的值),但我认为对于大多数情况来说这已经足够了。 - maja
你不应该使用 === 吗? - Et7f3XIV

3
自ECMAScript 2015以来,有startsWith()函数:
str.startsWith(searchString[, position])

这涵盖了非常常见的用例,其中比较的长度是searchString的长度,并且只需要布尔返回值(strcmp()返回一个整数以指示相对顺序)。 Mozilla文档页面还包含String.prototype.startsWith()polyfill

3
它并没有这个功能。您可以定义一个如下:

它并不具备此功能。您可以定义如下:

function strncmp(a, b, n){
    return a.substring(0, n) == b.substring(0, n);
}

2

这并不是一个中文句子,但你可以在这里找到一个相关的函数。同时,还有许多其他有用的JavaScript函数

function strncmp ( str1, str2, lgth ) {
    // Binary safe string comparison  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/strncmp
    // +      original by: Waldo Malqui Silva
    // +         input by: Steve Hilder
    // +      improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +       revised by: gorthaur
    // + reimplemented by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: strncmp('aaa', 'aab', 2);
    // *     returns 1: 0
    // *     example 2: strncmp('aaa', 'aab', 3 );
    // *     returns 2: -1
    var s1 = (str1+'').substr(0, lgth);
    var s2 = (str2+'').substr(0, lgth);

    return ( ( s1 == s2 ) ? 0 : ( ( s1 > s2 ) ? 1 : -1 ) );
}

"substring" 比 "substr" 更快。 - Triang3l

1
function strncmp(a, b, length) {
   a = a.substring(0, length);
   b = b.substring(0, length);

   return a == b;
}

1

你可以先截取字符串,然后再进行比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接