2014-01-28 52 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