Javascript 每次返回-1的indexOf(";-";)

Javascript 每次返回-1的indexOf(";-";),javascript,string,parse-platform,Javascript,String,Parse Platform,每次打印此文件时: var shortLocString = locationString; console.log("Index of dash in '" + shortLocString + "': " + shortLocString.indexOf('-')); 为什么在漫长的一天结束后,我觉得这是我错过的一件愚蠢的事情 谢谢你的帮助 Mike您的字符串中有某种非连字符。我不知道是哪一个;有很多类似的字符。有许多类似连字符的字符可用 如果键入“-”,则可能与要测试的字符串中的字符不同

每次打印此文件时:

var shortLocString = locationString;
console.log("Index of dash in '" + shortLocString + "': " + shortLocString.indexOf('-'));
为什么在漫长的一天结束后,我觉得这是我错过的一件愚蠢的事情

谢谢你的帮助


Mike

您的字符串中有某种非连字符。我不知道是哪一个;有很多类似的字符。

有许多类似连字符的字符可用

如果键入
“-”
,则可能与要测试的字符串中的字符不同

如果您有要测试的字符串(即:该字符串),一个简单的解决方案可能是复制字符串内部的破折号,将其粘贴到
.indexOf
中,然后重试

为了获得更健壮的解决方案,请获取所有连字符的Unicode(包括实际的减号),如果您处理的电话号码或序列号必须以相同的方式进行格式化,每次都要手动将这些破折号中的任何一个替换为正则表达式,以用于检查

另外,要为微软Word或其他富文本编辑器带来的麻烦做好准备。

他们会在心跳时将你的
换成花哨的引号,然后你的所有字符串都会被打断。他们也可能会对重音等使用不同的字符映射。

这是因为有不止一种类型的破折号-你在检查连字符,但地址包含一个破折号

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

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

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

-
未找到,因为您有一个
-
'-'!=='-'
您有字符
0x96
并检查字符
0x2D
它是@snwflk:nope,OP有一个3字节字符
0xE20x80 0x93
这太愚蠢了,但它起作用了……我甚至不知道你应该如何键入那种破折号。这就是从apple maps库中提取的内容,传递到Parse.com,然后再从
'–“中提取出来的内容。charCodeAt(0)==8211
看起来像一个破折号。
Index of dash in '325–333 Avenue C, New York, NY': 3