相当于C strncmp的JavaScript(比较字符串的长度)

时间:2010-01-24 18:22:02

标签: javascript string string-matching

在JavaScript函数strncmp中是否存在JavaScript的等价物? strncmp接受两个字符串参数和一个整数length参数。它将两个字符串进行比较,最多为length个字符,并确定它们是否相等length

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

6 个答案:

答案 0 :(得分:10)

您可以轻松构建该功能:

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 :(得分:3)

没有。您可以将其定义为:

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

答案 2 :(得分:2)

它没有,但您可以找到一个here以及many other useful javascript functions

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 ) );
}

答案 3 :(得分:1)

首先你可以substring字符串,然后进行比较。

答案 4 :(得分:1)

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

   return a == b;
}

答案 5 :(得分:0)

自ECMAScript 2015以来,有startsWith()

searchString

这涵盖了非常频繁的用例,其中比较的长度是strcmp()的长度,并且只需要布尔返回值(String.prototype.startsWith()返回一个整数来表示相对顺序,而不是。)

Mozilla doc page还包含[png @ 0x50f0700] Invalid PNG signature 0x2020202020202020. Error while decoding stream #0:0: Invalid data found when processing input 的{​​{3}}。