6

JavaScript 中是否有与 C 函数等价的功能strncmpstrncmp接受两个字符串参数和一个整数length参数。它将比较两个字符串的最多length字符,并确定它们是否相等length

JavaScript 是否有等效的内置函数?

4

6 回答 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);

于 2010-01-24T18:28:25.293 回答
3

它不是。您可以将其定义为:

function strncmp(a, b, n){
    return a.substring(0, n) == b.substring(0, n);
}
于 2010-01-24T18:30:40.443 回答
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 ) );
}
于 2010-01-24T18:29:09.417 回答
2

自 ECMAScript 2015 以来,有startsWith()

str.startsWith(searchString[, position])

这涵盖了非常常见的用例,其中比较的长度是 的长度searchString,并且只需要一个布尔返回值(strcmp()而是返回一个整数来指示相对顺序。)

Mozilla文档页面还包含一个用于.String.prototype.startsWith()

于 2017-09-05T22:11:53.867 回答
1

您总是可以先对字符串进行串化,然后再进行比较。

于 2010-01-24T18:27:47.253 回答
1
function strncmp(a, b, length) {
   a = a.substring(0, length);
   b = b.substring(0, length);

   return a == b;
}
于 2010-01-24T18:30:01.227 回答