【问题标题】:JavaScript equivalent to C strncmp (compare string for length)JavaScript 等价于 C strncmp(比较字符串的长度)
【发布时间】:2011-01-08 20:20:09
【问题描述】:

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

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

【问题讨论】:

    标签: javascript string string-matching


    【解决方案1】:

    自 ECMAScript 2015 以来,startsWith():

    str.startsWith(searchString[, position])
    

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

    Mozilla doc page 还包含一个用于String.prototype.startsWith()polyfill

    【讨论】:

      【解决方案2】:

      您可以轻松构建该功能:

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

      【讨论】:

      • 我构建它有点不同,但谢谢。只是想确保我没有先重新发明轮子。
      • 其实并不等价(它只返回0、-1或1,c-Function返回更多的值),但我认为对于大多数情况来说已经足够了
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:
        function strncmp(a, b, length) {
           a = a.substring(0, length);
           b = b.substring(0, length);
        
           return a == b;
        }
        

        【讨论】:

          【解决方案5】:

          没有,但您可以找到一个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 ) );
          }
          

          【讨论】:

          • substringsubstr 快。
          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-25
            • 2016-02-04
            • 1970-01-01
            • 2021-04-19
            • 2013-02-12
            • 1970-01-01
            • 2018-05-11
            • 1970-01-01
            相关资源
            最近更新 更多