如何过滤Java字符串以仅获取字母字符?

我正在生成一个XML文件进行付款,并且我对用户的全名有一个限制。该参数仅接受字母字符(a-ZAZ)+空格来分隔名称和姓氏。

我无法通过简单的方式对此进行过滤,如何构建正则表达式或过滤器以获得所需的输出?

例:

'Carmen López-Delina Santos' 一定是 'Carmen LopezDelina Santos'

我需要将元音转换成带有单个元音的装饰,如下所示:á> a,à> a,â> a,依此类推;等等。并删除特殊字符,如点,连字符等。

谢谢!

回答:

您可以先使用规范化器,然后删除不需要的字符:

String input = "Carmen López-Delina Santos";

String withoutAccent = Normalizer.normalize(input, Normalizer.Form.NFD);

String output = withoutAccent.replaceAll("[^a-zA-Z ]", "");

System.out.println(output); //prints Carmen LopezDelina Santos

请注意,这可能不适用于任何语言的所有非字母以及所有非字母-如果遇到这种情况,该字母将被删除。土耳其就是这样一个例子i

这种情况下的替代方法可能是列出所有可能的字母及其替换。

以上是 如何过滤Java字符串以仅获取字母字符? 的全部内容, 来源链接: utcz.com/qa/429601.html

回到顶部