2010-01-24 100 views

回答

8

你可以輕鬆地構建功能:

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

我建立了一點不同,但謝謝。只是想確保我沒有首先重新發明輪子。 – 2010-01-24 18:30:46

+0

實際上它不是等價的(它只返回0,-1或1,c函數返回更多的值),但是我認爲在大多數情況下它已經足夠了 – maja 2013-07-30 10:48:07

1

你總是可以先將substring的字符串,然後進行比較。

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

'substring'比'substr'快。 – Triang3l 2012-09-28 12:50:26

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

    return a == b; 
} 
3

事實並非如此。你可以定義一個爲:

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

由於ECMAScript中2015年有startsWith()

str.startsWith(searchString[, position]) 

這涵蓋了非常頻繁的使用情況下比較的長度是searchString的長度,只有一個布爾返回值是必需的(strcmp()返回一個整數,以指示相對順序,來代替。)

Mozilla doc page還包含一個用於polyfillString.prototype.startsWith()