这是我的代码:
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 :(得分: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
,通常最好将其传递给正则表达式,而不是字符串:
var sQuestionPropositionText = "This is a test|A";
var foundAt = sQuestionPropositionText.search(/\|/); // 14
旁注:几乎没有new String
在JavaScript中有用的情况,这就是我将其删除的原因。