2014-01-28 46 views
2
var shortLocString = locationString; 
console.log("Index of dash in '" + shortLocString + "': " + shortLocString.indexOf('-')); 

打印每次都是这样:的indexOf(“ - ”)回归 - 每次1

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

为什么我觉得这是我的思念在漫长的一天结束了一些愚蠢的事?

感谢您的帮助!

Mike

+0

'-'是没有找到,因为你有一个'-','' - '!=='-'' –

+0

你得到了字符'0x96'并检查字符'0​​x2D' – snwflk

+0

它是http://www.fileformat.info/info/unicode /char/2013/index.htm – zerkms

回答

5

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

+2

'' - '。charCodeAt(0)=== 8211' –

+0

看起来像一个破折号,然后。 – user2357112

2

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

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

如果你要测试的字符串(即:一个),一个简单的解决办法是复制它存在串内的仪表板,将其粘贴到您的.indexOf,然后再试一次。

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

此外,准备好与MS Word或其他富文本编辑器头痛。
他们会将您的"替换为心跳中的花式引号,然后您的所有字符串都会被打破。它们也可以针对重音等使用不同的字符映射。

1

这是因为有多种类型的短划线 - 您正在检查连字符,但地址中包含短划线。

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

应打印

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

如果你的地址可能包括EM和/或短划线你要检查字符\ u2013和\ u2014