我正在生成一个XML文件来进行付款,并且我对用户的全名有一个限制。该参数只接受字母字符(a-ZAZ)+空格来分隔名字和姓氏。如何筛选Java字符串以仅获取字母字符?
我无法以简单的方式过滤这个问题,我如何构建正则表达式或过滤器来获得我期望的输出?
实施例:
'Carmen López-Delina Santos'
必须'Carmen LopezDelina Santos'
我需要与单个元音装饰品转化元音如下:A> A,A> A,A>一个,等等;并删除特殊字符,如点,连字符等。
谢谢!
我正在生成一个XML文件来进行付款,并且我对用户的全名有一个限制。该参数只接受字母字符(a-ZAZ)+空格来分隔名字和姓氏。如何筛选Java字符串以仅获取字母字符?
我无法以简单的方式过滤这个问题,我如何构建正则表达式或过滤器来获得我期望的输出?
实施例:
'Carmen López-Delina Santos'
必须'Carmen LopezDelina Santos'
我需要与单个元音装饰品转化元音如下:A> A,A> A,A>一个,等等;并删除特殊字符,如点,连字符等。
谢谢!
你可先用a Normalizer,然后删除不需要的字符:
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
注意,这可能不会对所有和任何语言的任何非ASCII字符的工作 - 如果这样的情况下,遇到的信件会被删除。一个这样的例子是土耳其语i
。
在这种情况下的替代可能是列出所有可能的字母和它们的替代...
这正是我需要的,因为系统正在等待我的XML文件不允许任何其他字符作为名称字段 – EnriMR
您可以稍后replaceAll
与[^A-Za-z ]
使用此方法removeAccents:
public static String removeAccents(String text) {
return text == null ? null :
Normalizer.normalize(text, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
的
Normalizer
将原始字符分解为基本字符和变音符号的组合 (这可以是不同语言中的多个符号 )。á
,é
和í
具有相同符号:0301
对于 标记为'
重音。
\p{InCombiningDiacriticalMarks}+
正则表达式将匹配所有 这样的变音代码,我们将用空字符串替换它们。
而且在来电:
String original = "Carmen López-Delina Santos";
String res = removeAccents(original).replaceAll("[^A-Za-z ]", "");
System.out.println(res);
如何'O'成为'O'和BTW'[A-ZA-Z]'不包括'O' – anubhava
我需要按如下方式将单元音中的装饰元素转换为元音:a> a,à> a,→a等等。 – EnriMR
该要求必须是您的问题的一部分,而不是在评论中。另外不要忘记显示你的尝试。 – anubhava