2016-12-14 22 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