与StringByFoldingWithOptions相同的是什么:locale:在Java中?

时间:2014-01-31 20:19:00

标签: java string normalize

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

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

NSString Class Reference - stringByFoldingWithOptions:locale:

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

1 个答案:

答案 0 :(得分:3)

您可以使用java.text.Normalizer接近标准化Java中的字符串。虽然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