JavaScript中是否存在與C函數strncmp
相同的內容? strncmp
需要兩個字符串參數和一個整數length
參數。它會比較兩個字符串的最大length
個字符,並確定它們是否相等,直到length
去。JavaScript等價於C strncmp(長度比較字符串)
JavaScript是否有等效的內置函數?
JavaScript中是否存在與C函數strncmp
相同的內容? strncmp
需要兩個字符串參數和一個整數length
參數。它會比較兩個字符串的最大length
個字符,並確定它們是否相等,直到length
去。JavaScript等價於C strncmp(長度比較字符串)
JavaScript是否有等效的內置函數?
你可以輕鬆地構建功能:
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);
你總是可以先將substring的字符串,然後進行比較。
它不會,但你可以找到一個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'快。 – Triang3l 2012-09-28 12:50:26
function strncmp(a, b, length) {
a = a.substring(0, length);
b = b.substring(0, length);
return a == b;
}
事實並非如此。你可以定義一個爲:
function strncmp(a, b, n){
return a.substring(0, n) == b.substring(0, n);
}
由於ECMAScript中2015年有startsWith()
:
str.startsWith(searchString[, position])
這涵蓋了非常頻繁的使用情況下比較的長度是searchString
的長度,只有一個布爾返回值是必需的(strcmp()
返回一個整數,以指示相對順序,來代替。)
的Mozilla doc page還包含一個用於polyfillString.prototype.startsWith()
。
我建立了一點不同,但謝謝。只是想確保我沒有首先重新發明輪子。 – 2010-01-24 18:30:46
實際上它不是等價的(它只返回0,-1或1,c函數返回更多的值),但是我認爲在大多數情況下它已經足夠了 – maja 2013-07-30 10:48:07