JavaScript эквивалентен C strncmp (сравните строку по длине) - PullRequest
4 голосов
/ 24 января 2010

Есть ли в JavaScript эквивалент функции C strncmp? strncmp принимает два строковых аргумента и целочисленный length аргумент. Он сравнил бы две строки до 1004 * символов и определил бы, равны ли они до 10000 *

Имеет ли JavaScript встроенную эквивалентную функцию?

Ответы [ 6 ]

10 голосов
/ 24 января 2010

Вы можете легко построить эту функцию:

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

3 голосов
/ 24 января 2010

Это не так. Вы можете определить один как:

function strncmp(a, b, n){
    return a.substring(0, n) == b.substring(0, n);
}
2 голосов
/ 24 января 2010

Нет, но вы можете найти одну здесь вместе с многими другими полезными функциями 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 ) );
}
1 голос
/ 24 января 2010
function strncmp(a, b, length) {
   a = a.substring(0, length);
   b = b.substring(0, length);

   return a == b;
}
1 голос
/ 24 января 2010

вы всегда можете подстрока сначала строки, а затем сравнить.

0 голосов
/ 06 сентября 2017

С ECMAScript 2015 существует startsWith():

str.startsWith(searchString[, position])

Это относится к очень частому случаю использования, когда длина сравнения равна длине searchString, и требуется только логическое возвращаемое значение (strcmp() возвращает вместо этого целое число для обозначения относительного порядка.)

Страница документа Mozilla также содержит polyfill для String.prototype.startsWith().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...