问题描述
为什么javascript为
'aaaaa\\bb'.indexOf('\\\\')
回报
-1
?
我希望5,但是bi得到了。 它确实不会将反斜杠读作符号,但它将其视为转义字符?
1楼
解析字符串常量时,搜索字符串( 'aaaaa\\bb'
)中的反斜杠消失;
JavaScript解析器总是读取字符串常量中的单个反斜杠作为转义。
你必须加倍它,就像你传递给.indexOf()
的字符串一样。
在您的情况下, \\b
是退格控制字符的转义符。
即使在类似\\q
的情况下,这不是一个“特殊”字符,反斜杠基本上被忽略。
2楼
如前所述,它被Javascript解析器解释为控制字符。
如果使用扩展语法创建数组,则将获得\\b
作为单个元素而不是两个元素\\
和b
str = 'aaaaa\\bb'; console.log([...str]);
3楼
这是因为\\b
表示退格控制字符,并在console.log
字符串时被忽略。
const str = '1234\\bb'; console.log(str);
所以你的字符串中没有反斜杠, indexOf
返回-1。
const str = 'aaaaa\\bb'; console.log(str.indexOf('\\\\'));
如果要对反斜杠进行编码,则必须使用\\
本身来对其进行转义:
const str = 'aaaaa\\\\bb'; console.log(str); console.log(str.indexOf('\\\\'));