【发布时间】:2020-02-12 15:43:57
【问题描述】:
是否有 Java 库可以通过删除空格/特殊字符、小写所有字母来规范化字符串,例如:S-cube Abc' Inc. 到 scubeabcinc?
【问题讨论】:
-
s = s.replaceAll("\\W", "").toLowerCase();
标签: java normalization
是否有 Java 库可以通过删除空格/特殊字符、小写所有字母来规范化字符串,例如:S-cube Abc' Inc. 到 scubeabcinc?
【问题讨论】:
s = s.replaceAll("\\W", "").toLowerCase();
标签: java normalization
有java.text.Normalizer。 Java 以 Unicode 格式保存文本,é 可以写成一个 Unicode 符号、代码点或两个,一个e 和一个零宽度'。 Unicode 规范化非常重要,对于字典、文件名。
Normalizer 可用于分解为字母和重音符号(变音符号),并使用 regex replaceAll 删除所有重音符号。
Character 支持 Unicode,为代码点提供 Unicode 名称,将代码点分类为字母、数字、多个脚本等。
Collate,面向区域设置,为单词创建特定键,用于排序,如Comparator。在一个语言环境中,顺序可能是 AaBbCcĉD.. 而在另一个 ABC...abc 等。 Locale 指定大写字母。例如,在土耳其语中有一个字母 i-without-dot Iı 和 i-with-dot İi。
然后是您的用例:减少。例如,用于声音相似表示的 soundex 算法(第三方)。正则表达式可以删除与String.replaceAll 的插接等。
【讨论】:
除了 String 之外,不需要库,String.replaceAll 和 String.toLowerCase 可以满足您的需求:
String s = "S-cube Abc' Inc.";
s = s.replaceAll("[^a-zA-Z]", "").toLowerCase();
【讨论】:
不需要库。只需使用正则表达式和String#toLowerCase:
String s = "S-cube Abc' Inc.";
s = s.replaceAll("[^a-zA-Z]", "");
s = s.toLowerCase();
System.out.println(s);
【讨论】: