为什么javascript为
'aaaaa\bb'.indexOf('\\')
回报
-1
?
我期待5,但我得到了。它确实不会将反斜杠读作符号,但它将其视为转义字符?
解析字符串常量时,搜索字符串('aaaaa\bb'
)中的反斜杠消失; JavaScript解析器总是读取字符串常量中的单个反斜杠作为转义。你需要加倍它,就像你传递给.indexOf()
的字符串一样。
在您的情况下,\b
是退格控制字符的转义符。即使在像\q
这样不是“特殊”字符的情况下,反斜杠也基本上被忽略了。
如前所述,它被Javascript解析器解释为控制字符。如果你使用扩展语法来创建一个数组,你会得到一个\b
作为单个元素而不是两个元素\
和b
str = 'aaaaa\bb';
console.log([...str]);
这是因为\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('\\'));