String.search(“|”)符号结果

时间:2016-12-14 15:18:55

标签: javascript

这是我的代码:

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

任何人都知道为什么“|”找不到人物? 谢谢你的时间。

1 个答案:

答案 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中有用的情况,这就是我将其删除的原因。