2011-12-15 90 views
2

我調試一些代碼,發現了下面的代碼片段,只是沒有得到它做什麼:什麼是string.indexOf(「*。」)在Javascript中做什麼?

function appendModelPrefix(value, prefix) { 
    if (value.indexOf("*.") === 0) { 
     value = value.replace("*.", prefix); 
    } 
    return value; 
} 

什麼我的字符串值有看起來像獲得通過,如果條件驗證? 什麼是「*」。準確地做?我沒有得到通配符...

+0

我可能是錯的,但我認爲它的檢查值,如果沒有了」之前出現。 「比它填充前綴 – Drewdin 2011-12-15 16:52:43

+0

這應該有助於你理解代碼的作用:http://jsfiddle.net/fuAwb/ – Ivan 2011-12-15 16:54:17

回答

3

我沒有通配符。它搜索然後替換文字"*."通過prefix

indexOf發現的"*."第一次出現的字符串:「*」

>>>"aaa*.".indexOf("*.") 
3 

因此,如果字符串開頭您consition會成功了(索引0)

>>> "*.aaa".indexOf("*.") 
0 

替換方法將取代第一次出現「*」。

>>> 'abbbc'.replace(/b+/, 'z') 
"azc" 
2

的indexOf會給字符串內文本的位置:與所選擇的前綴

>>> "*.*.".replace("*.", "z") 
"z*." 

順便說一句,只有當您使用正則表達式,而不是字符串模式得到通配符的替代品。

因此,if語句讀取如果value以「*」開頭。然後將其替換爲prefix

2

如果字符串以子串*.開頭,則將其替換爲prefix

>>> "*.".indexOf('*.') 
0 
>>> "a*.".indexOf('*.') 
1 
0

JavaScript中沒有wilcard-thing .indexOf()

它只是將值*.替換爲prefix

1

如果您的value*.開頭,那麼它會將*.替換爲prefix參數。

0

它是一種香草字符串匹配,如果value開始*.那麼*.由字符串替換prefix

"aaa" -> "aaa" 
"*.a" -> "a" + prefix