【问题标题】:Java string comparison - ignore letter accents and case [duplicate]Java字符串比较-忽略字母重音和大小写[重复]
【发布时间】:2016-09-02 18:35:34
【问题描述】:

我正在尝试寻找一种方法来比较两个字符串而不考虑它们的字母重音和大小写。

我正在解析一个包含许多不同语言名称的大型文档,有时用户忘记添加重音符号,只是懒于将重音符号添加到他们的名字中,或者不同语言的相同名称拼写相同的事实字母,但没有重音。

例如,"COTE D'IVOIRE" = "Côte d'Ivoire" 将是真的。

我知道 Java 有一个内置的 .equalsIgnoreCase,但是我如何在忽略重音和大小写的情况下比较重音?

【问题讨论】:

标签: java regex string unicode utf


【解决方案1】:

您可以首先使用Normalizer(参见this question)去除所有重音,然后忽略大小写进行比较。

编辑 - 或者,正如用户 @lbarros 所指出的,Collator 会更好地工作

【讨论】:

  • 实际上,我认为 Normalizer 类会更好地工作,如以下问题所述:stackoverflow.com/questions/2397804/… 因为 Collat​​or 更适合排序而不是相等比较。
  • @Kingamere - 比较是平等的超集,但无论哪种方式,其中一种都应该适合您
猜你喜欢
  • 2010-09-26
  • 2016-01-29
  • 2011-09-16
  • 2016-05-03
  • 2017-02-21
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
相关资源
最近更新 更多