我想知道是否有方法比較2個字符串並忽略使「noção」等於「nocao」的重音。 它會像string1.methodCompareIgnoreAccent(string2);比較忽略重音字符的字符串
回答
您可以使用Java Collator對象比較忽略了重音測試,看一個簡單的例子:
import java.text.Collator;
/**
* @author Kennedy
*/
public class SimpleTest
{
public static void main(String[] args)
{
String a = "nocao";
String b = "noção";
final Collator instance = Collator.getInstance();
// This strategy mean it'll ignore the accents
instance.setStrength(Collator.NO_DECOMPOSITION);
// Will print 0 because its EQUAL
System.out.println(instance.compare(a, b));
}
}
文檔:JavaDoc
我不會詳細解釋,因爲我只用了一點Collators和我不是專家,但你可以谷歌有一些關於它的文章。
謝謝。不知道Collator – alexandre1985 2015-03-03 15:16:12
這是行不通的,它不會打印0.有時它打印-1其他時間1 – alexandre1985 2015-03-03 16:48:54
它的工作原理是,在weston編輯之前獲取代碼。 – 2015-03-03 17:24:26
沒有內置的方法來做到這一點,所以你必須建立自己的:
這方面的一個部分解決方案是從here: 這首先拆分所有重音字符到他們deAccented同行其次是他們的結合變音符號。然後,您只需刪除所有組合變音符號。 也看到https://stackoverflow.com/a/1215117/4095834
然後你的equals方法看起來就像這樣:
import java.text.Normalizer;
import java.text.Normalizer.Form;
public boolean equals(Object o) {
// Code omitted
if (yourField.equals(removeAccents(anotherField))) {
return true;
}
}
public static String removeAccents(String text) {
return text == null ? null : Normalizer.normalize(text, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
- 1. 忽略字符串比較中的重音字母
- 2. 比較字符串忽略SQL中的重音(ORACLE)
- 3. MySQL的比較字符串忽略非字母數字字符
- 4. SQL字符串比較忽略空白
- 5. 比較字符串忽略大小寫
- 6. string.search()忽略重音字符?
- 7. 如何在Perl中比較字符串時忽略重音符號?
- 8. 字符串比較忽略特殊字符C#
- 9. 正則表達式:忽略字符字符串比較
- 10. 在java比較字符串忽略特殊字符
- 11. 比較字符串時忽略特殊字符
- 12. SPARQL中字符串匹配時如何忽略重音字符
- 13. 如何忽略行尾的數字以比較字符串?
- 14. 比較忽略前導字符
- 15. 如何比較字符串並忽略JAVAScript中句子的起始字符串
- 16. 如何忽略字符串比較和字典查找
- 17. 在比較字符串時忽略數字
- 18. 字符/字符串比較
- 19. 字符串字符比較
- 20. 有特殊字符比較詞時忽略變音字符(E,E,...)
- 21. 忽略字符串中的octalescape字符
- 22. 關於分割字符串和忽略比較中的尾隨字符
- 23. 如何在JavaScript中比較兩個字符串,忽略字符排列
- 24. 比較字符串
- 25. 比較字符串
- 26. 比較字符串
- 27. 字符串比較
- 28. 比較字符串
- 29. 字符串比較
- 30. 字符串比較
你看過['Collator'](http://docs.oracle.com/javase/8/docs/api/java/text/Collator.html)嗎? – 2015-03-03 14:05:56
你也可以看看https://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet。 – 2015-03-03 14:10:08
我已經寫了一個通過忽略變音符號(不刪除它們)來搜索阿拉伯語文本的類。也許你可以得到想法或以某種方式使用它。 https://gist.github.com/mehdok/e6cd1dfccab0c75ac7a9536c6afac8ff – mehdok 2017-07-19 15:48:23