我遇到的问题是关于JavaScript中字符串搜索函数。我无法在我的字符串中找到符号“^”。例如:
string = "2^3";
n = string.search("^");
console.log(n);
在这个例子中,它会记录 i = "0"。 但 "^" 在 "1" 中。 这适用于除插入符号('^')以外的任何搜索。
有人能帮我修复这个问题吗?
我遇到的问题是关于JavaScript中字符串搜索函数。我无法在我的字符串中找到符号“^”。例如:
string = "2^3";
n = string.search("^");
console.log(n);
在这个例子中,它会记录 i = "0"。 但 "^" 在 "1" 中。 这适用于除插入符号('^')以外的任何搜索。
有人能帮我修复这个问题吗?
来自MDN
search()
方法执行一个正则表达式与当前 String 对象的匹配搜索。
str.search(regexp)
^
是正则表达式的特殊字符。你需要对其进行转义:n = string.search("\\^");
或者简单地使用正则表达式:
n = string.search(/\^/);
String.prototype.search
文档,传递的第一个参数将被视为正则表达式。
因此,您传递的字符串会转换为regexp
一个正则表达式对象。如果传递了非RegExp对象obj,则通过使用new RegExp(obj)隐式转换为RegExp。
RegExp
对象,并且在正则表达式中,^
表示第一个字符。因此,它返回第一个字符的索引,0
。^
:\\^
。var inputString = "2^3";
var n = inputString.search("\\^");
console.log(n);
输出
1
IT需要一个正则表达式。如果字符串中没有特殊字符,它们看起来与正则表达式相同,但是当存在特殊字符时情况并非如此。
<script>
string = "2^3";
n = string.search(/\^/);
console.log(n); //1
</script>
其他答案已经解释了为什么你的代码无法正常工作。然而,最简单的解决方案被忽略了:使用 .indexOf
而不是 .search
:
var n = inputString.indexOf("^");