我正在寻找标准化标题列表的方法。标题被标准化以存储在数据库中,作为排序和查找键。 “规范化”是指许多事情,例如转换为小写字母,删除罗马重音符号或删除前面的“the”,“a”或“an”。

在iOS或Mac中,NSString类具有stringByFoldingWithOptions:locale:方法来获取字符串的折叠版本。

NSString Class Reference - stringByFoldingWithOptions:locale:

在Java中,java.uril.Collat​​or类对于进行比较似乎很有用,但似乎没有办法为此目的进行转换。

最佳答案

您可以使用 java.text.Normalizer ,它接近Java中的Strings规范化。尽管regex也是以任何可能的方式操作字符串的有效方法。

去除重音的示例:

String accented = "árvíztűrő tükörfúrógép";
String normalized = Normalizer.normalize(accented,  Normalizer.Form.NFD);
normalized = normalized.replaceAll("[^\\p{ASCII}]", "");

System.out.println(normalized);

输出:
arvizturo tukorfurogep

此处提供更多说明:http://docs.oracle.com/javase/tutorial/i18n/text/normalizerapi.html

10-02 20:44
查看更多