如何知道一個字符串是否包含口音?如何知道一個字符串是否包含口音
回答
我認爲你可以做的最好的事情就是使用一個標準化器,它將帶有重音符的unicode字符分成兩個獨立的字符。 Java在類Normalizer
中包括這個,參見here。
此,例如,將分裂
U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
到
U+0041 LATIN CAPITAL LETTER A
U+0301 COMBINING ACUTE ACCENT
,並會做這對於具有重音符號或其他變音標記(http://en.wikipedia.org/wiki/Diacritic)每個字符。
然後你可以檢查產生的CharSequence
是否有一些重音字符(並且這意味着硬編碼它們),或者簡單地檢查標準化版本是否等於起始字符,這意味着沒有任何已分解的字符。 Java Normalizer
已在isNormalized(CharSequence src, Normalizer.Form form)
中有此功能,但您應該查看各種表單以查看是否有適合您的需求的表單。
編輯:如果你只需要基本的口音的支持(像是剛èE中的O I U)你可以去大江戶選擇,如果你需要爲所有現有的口音全力支持,更是瘋狂硬編碼他們都..
如果您在\ p {Mn}上匹配,我認爲您可以過濾掉所有組合標記(這是標記的一般類別,非間隔)。 – wds 2010-05-05 15:27:29
要做到這一點是使用normalize(str,NFD)
從java.text.Normalizer
,然後刪除普通類馬克\pM
或無空格的字符的正確方法什麼口音加馬克\p{Mn}
。 Java不支持標準Unicode屬性\p{Diacritic}
或者您可以使用它。請注意,並非所有的變音符號都是非間距符號,反之亦然。
但是,這可能是錯誤的事情。如果您嘗試執行不區分重音的字符串搜索和比較,則正確的方法是將字符串保持原樣。您需要創建一個級別設置爲1(或者說,PRIMARY)的UCA排序規則對象,然後使用它來比較您的字符串。如果字符串在主要強度上比較相等,則忽略重音標記等內容。
Here are examples在Java中如何使用ICU的Collator類來做到這一點。如果你使用正確的UCA collators,那麼你不必規範化;他們爲你照顧這件事。
This answer在Perl中使用了兩個UCA collator對象,一個用於主要強度以完全忽略用於字符串搜索和比較的重音符號,另一個用於允許區分次要強度的變音符號與Unicode的正常區別。
- 1. JAVA ArrayList:如何知道它是否包含一個字符串數組?
- 2. 如何知道如果一個字符串包含在Java中
- 3. 如何知道該字符串包含一些字符?
- 4. 我如何知道我的字符串是否包含「micro」Unicode字符?
- 5. 數組未能知道它是否包含字符串
- 6. 如何知道一個NSMutableArray是否包含一個對象?
- 7. 如何確定一個字符串是否包含另一個字符串
- 8. 如何檢查一個字符串是否包含一個子字符串 - mysql
- 9. 如何找到一個字符串是否包含在另一個字符串
- 10. 知道如果一個字符串包含在Java中
- 11. 如何檢查一個字符串是否包含任何一些字符串
- 12. 如何檢查一個字符串是否包含字典
- 13. Java,如何檢查一個字符串是否包含數字?
- 14. 如何檢查一個TextView是否包含某個字符串
- 15. 檢查一個字符串是否包含任何字符
- 16. Java - 查看一個字符串是否包含任何字符
- 17. Javascript - 如何檢查一個字符串是否包含多個子字符串
- 18. AutoHotKey - 測試字符串是否包含另一個字符串
- 19. 試圖找到一個字符串是否包含字符串
- 20. Applescript:檢查一個字符串是否包含空字符串?
- 21. 如何知道數組是否包含空字符串,但排除0
- 22. 找出一個字符串是否包含唯一字符
- 23. 如何檢查字符串是否包含某個字符?
- 24. flash:我怎麼知道一個字符串包含子字符串的次數?
- 25. 如何檢查一個字符串是否包含char?
- 26. 如何檢查一個字符串是否包含在ArrayList中?
- 27. 如何檢查一個字符串是否包含zalgo文本?
- 28. 如何檢查一個字符串是否包含給定的子字符串?
- 29. 如何判斷一個字符串是否包含Guid作爲子字符串?
- 30. 如何檢查一個字符串是否包含特定的子字符串
'''口音?是「\'」一個口音? – kennytm 2010-05-05 14:58:00
accents =èèèè... – Mercer 2010-05-05 14:58:28
這不是一個答案。有很多很多的變音符號超出了你的想象:http://blogs.msdn.com/michkap/archive/2006/02/17/533929.aspx你必須根據「重音」來決定你的意思。這不像你想象的那麼簡單。 – 2010-05-05 15:15:50