删除 Scala 中的变音符号

aru*_*nov 5 regex scala

问题很简单,将某种语言中的字符串删除变音符号。例如,采用“t\xc3\xa9l\xc3\xa9phone”会产生结果“telephone”。

\n\n

在Java中我可以使用这样的方法:

\n\n
 public static String removeAccents(String str){\n    return Normalizer.normalize(str, Normalizer.Form.NFD).replaceAll("\\\\p{InCombiningDiacriticalMarks}+", "");\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

它工作正常,但在 scala 中却不行...我尝试了如下代码:

\n\n
val str = Normalizer.normalize("t\xc3\xa9l\xc3\xa9phone",Normalizer.Form.NFD)\nval exp = "\\\\p{InCombiningDiacriticalMarks}+".r\nexp.replaceAllIn(str,"")\n
Run Code Online (Sandbox Code Playgroud)\n\n

它不起作用!

\n\n

我想,我在 Scala 中使用正则表达式时遗漏了一些东西,所以任何帮助将不胜感激。

\n

Pet*_*tch 2

我使用标准化器遇到了同样的问题。从Apache Commons StringUtils找到了解决方案中找到了 stripAccents 形式的

\n\n
 val str = stripAccents("t\xc3\xa9l\xc3\xa9phone")\n println(str)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将产生“电话”。希望这对某人有帮助!

\n