【发布时间】:2011-01-08 20:20:09
【问题描述】:
JavaScript 中是否有与 C 函数 strncmp 等效的函数? strncmp 接受两个字符串参数和一个整数 length 参数。它将比较两个字符串最多为length 字符,并确定它们是否与length 相同。
JavaScript 是否有等效的内置函数?
【问题讨论】:
标签: javascript string string-matching
JavaScript 中是否有与 C 函数 strncmp 等效的函数? strncmp 接受两个字符串参数和一个整数 length 参数。它将比较两个字符串最多为length 字符,并确定它们是否与length 相同。
JavaScript 是否有等效的内置函数?
【问题讨论】:
标签: javascript string string-matching
自 ECMAScript 2015 以来,startsWith():
str.startsWith(searchString[, position])
这涵盖了非常常见的用例,其中比较的长度是searchString 的长度,并且只需要一个布尔返回值(strcmp() 返回一个整数来指示相对顺序。)
Mozilla doc page 还包含一个用于String.prototype.startsWith() 的polyfill。
【讨论】:
您可以轻松构建该功能:
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);
【讨论】:
它没有。您可以将其定义为:
function strncmp(a, b, n){
return a.substring(0, n) == b.substring(0, n);
}
【讨论】:
function strncmp(a, b, length) {
a = a.substring(0, length);
b = b.substring(0, length);
return a == b;
}
【讨论】:
没有,但您可以找到一个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 ) );
}
【讨论】:
substring 比 substr 快。
您总是可以先substring 字符串,然后进行比较。
【讨论】: