2010-01-01 71 views
63

最殘酷的事情!下面的代碼打印出'llo'而不是預期的'wo'。我得到了一些其他數字這樣令人驚訝的結果。我在這裏錯過了什麼?javascript子字符串

alert('helloworld'.substring(5, 2)); 

回答

93

你混淆substring()substr()substring()預計兩項指標,而不是偏移量和長度。在你的情況下,索引是5和2,即字符2..4將被返回,因爲更高的索引被排除。

+7

+1提SUBSTR。 – 2010-01-01 16:58:22

14

檢查substringsyntax

子(從,到)

必需。 開始提取的索引。第一個字符 位於索引0

可選。該索引 在哪裏停止提取。如果忽略 ,它提取 字符串的其餘部分

我會給予你這有點奇怪。我自己不知道。

你想要做什麼是

alert('helloworld'.substring(5, 7)); 
2
alert('helloworld'.substring(5, 2)); 

上面的代碼是錯誤的,因爲第一個值是起點,從焦炭5是o結束point.Eg移動和去爲char 2這是l所以會得到​​所以你已經告訴它倒退。

昱歐想要的是

alert('helloworld'.substring(5, 7)); 
44

您在JavaScript中的三個選項:

//slice 
//syntax: string.slice(start [, stop]) 
"Good news, everyone!".slice(5,9); // extracts 'news' 

//substring 
//syntax: string.substring(start [, stop]) 
"Good news, everyone!".substring(5,9); // extracts 'news' 

//substr 
//syntax: string.substr(start [, length]) 
"Good news, everyone!".substr(5,4); // extracts 'news' 
0

這是我做了什麼,

var stringValue = 'Welcome to India'; 

// if you want take get 'India' 
// stringValue.substring(startIndex, EndIndex) 
    stringValue.substring(11, 16); // O/p 'India'