2016-12-14 50 views
0

這是我的代碼:String.search( 「|」)符號結果

var sQuestionPropositionText = new String("This is a test|A"); 
for(var i=0; i < sQuestionPropositionText.length; i++){ 
console.log(sQuestionPropositionText[i] + " search result= " + sQuestionPropositionText[i].search("|")); 
} 

這是我在控制檯得到:

T search result= 0 
h search result= 0 
i search result= 0 
s search result= 0 
    search result= 0 
i search result= 0 
s search result= 0 
    search result= 0 
a search result= 0 
    search result= 0 
t search result= 0 
e search result= 0 
s search result= 0 
t search result= 0 
| search result= 0 
A search result= 0 

任何人都知道爲什麼 「|」字符沒有找到? 謝謝你的時間。

+0

嘗試轉義它。 '\ |'。 –

+0

像你說的那樣逃離它不起作用,至少在我的情況下,@ t-j-crowder給出的解決方案是正確的(但使用IndexOf更容易) – smirnoff103

回答

4

String#search預計正則表達式。如果你給它一個字符串,它會通過new RegExp將它轉換爲正則表達式。 |在正則表達式中是特殊的。

要搜索文字字符或子字符串,請使用indexOf。你並不需要一個循環:

var sQuestionPropositionText = "This is a test|A"; 
var foundAt = sQuestionPropositionText.indexOf("|"); // 14 

當然或者,您可以逃避它,但它是一個字符串形式尷尬,因爲\既在字符串轉義字符正則表達式中的轉義字符,所以把一個\在正則表達式來逃避|,你的字符串字面量(第一逃離秒)需要:

var sQuestionPropositionText = "This is a test|A"; 
var foundAt = sQuestionPropositionText.search("\\|"); // 14 

如果你打算使用search,U sually最好將它傳遞一個正則表達式,而不是一個字符串:

var sQuestionPropositionText = "This is a test|A"; 
var foundAt = sQuestionPropositionText.search(/\|/); // 14 

邊注:有幾乎沒有的情況下,其中new String是在JavaScript中,這就是爲什麼我刪除它上面有用。

+0

非常感謝! – smirnoff103