indexOf(“ - ”)每次返回-1

时间:2014-01-28 03:00:17

标签: javascript string parse-platform

var shortLocString = locationString;
console.log("Index of dash in '" + shortLocString + "': " + shortLocString.indexOf('-'));

每次都打印出来:

Index of dash in '325–333 Avenue C, New York, NY': -1

为什么我觉得这是一个愚蠢的事情,我在漫长的一天结束时失踪了?

感谢您的帮助!

麦克

3 个答案:

答案 0 :(得分:5)

你的字符串中有某种非连字符。我不确定是哪一个;有一堆看起来像那样。

答案 1 :(得分:2)

有很多类似连字符的字符。

如果您输入"-",它可能与您正在测试的字符串中放置的字符不同。

如果您有要测试的字符串(即:那个),一个简单的解决方案可能是复制字符串中存在的短划线,将其粘贴到.indexOf中然后重试。

对于更强大的解决方案,获取所有连字符的Unicodes(包括实际的减号),如果您要处理的电话号码或序列号必须以相同的方式进行格式化,每次,然后手动将RegEx替换为任何破折号,以用于检查的格式。

此外,准备好使用MS Word或其他富文本编辑器来解决问题 他们会在心跳中交换您的"以获得花哨的引号,然后您的所有字符串都会被破坏。他们也可能使用不同的字符映射来表示重音等等。

答案 2 :(得分:1)

这是因为有多种类型的破折号 - 你正在检查连字符,但地址包含一个短划线。

console.log("Index of dash in '" + shortLocString + "': " + shortLocString.indexOf('\u2013'));

应该打印

Index of dash in '325–333 Avenue C, New York, NY': 3

如果您的地址可能包含em和/或en破折号,则您需要检查字符\ u2013和\ u2014

相关问题