indexOf()反斜杠返回-1 javascript

问题描述 投票:3回答:3

为什么javascript为

'aaaaa\bb'.indexOf('\\')

回报

-1

我期待5,但我得到了。它确实不会将反斜杠读作符号,但它将其视为转义字符?

javascript indexof backslash
3个回答
6
投票

解析字符串常量时,搜索字符串('aaaaa\bb')中的反斜杠消失; JavaScript解析器总是读取字符串常量中的单个反斜杠作为转义。你需要加倍它,就像你传递给.indexOf()的字符串一样。

在您的情况下,\b是退格控制字符的转义符。即使在像\q这样不是“特殊”字符的情况下,反斜杠也基本上被忽略了。


0
投票

如前所述,它被Javascript解析器解释为控制字符。如果你使用扩展语法来创建一个数组,你会得到一个\b作为单个元素而不是两个元素\b

 str = 'aaaaa\bb';
 console.log([...str]);

0
投票

这是因为\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('\\'));
© www.soinside.com 2019 - 2024. All rights reserved.