String.indexOf 函数出现意外结果?

2024-03-07

我真的对这个感到抓狂......

情况是这样的。我有两个 JavaScript 字符串,如下所示:

dsName = "Test 1"
replacementString = "Test "

我正在尝试查看 dsName 是否以 replacementString 开头,使用以下代码:

if(dsName.indexOf(replacementString) == 0)
{
    // I never get here!
}

indexOf 返回-1!这怎么可能?我可以在该行之前在 Chrome 脚本调试中放置一个断点,并将“dsName.indexOf(replacementString)”粘贴到控制台中,然后看到它确实返回 -1。

现在,为了证明我没有疯,我可以从同一个断点打印出 dsName,它实际上等于“Test 1”,而 replacementString 确实等于“Test”。这是 Chrome 调试控制台的实际屏幕截图:

正如您所看到的,如果我粘贴文字字符串,它会按预期工作,但如果我使用变量,它就不起作用。我什至尝试过 String(replacementString) 和 replacementString.toString() 来看看是否可能是类型问题,但它做了同样的事情。

如果indexOf 的参数是文字字符串,则它可以工作,但如果它是字符串变量,则不行。

我是不是疯了,我错过了什么愚蠢的事情吗?或者这可能是 Chrome 中的一个错误?


看起来有些看起来像空格的字符实际上并不是简单的空格。试试这个来看看字符串真正包含什么:

for (var i=0; i<replacementString.length; i++) 
    console.log(replacementString.charCodeAt(i));

您可以用常规空格替换不间断空格,如下所示:

replacementString = replacementString.replace(String.fromCharCode(160), " ");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String.indexOf 函数出现意外结果? 的相关文章

随机推荐