如何用相应的英文字母替换像“á”这样的字符

时间:2015-02-15 08:55:55

标签: java regex unicode normalization unicode-normalization

我有一个样本字符串,如á,é,í,ó,ú,ü,ñ,我想替换特殊字符,例如:
á有一个 é与e
等等..

我有一张地图,其中我将特殊字符作为键,并将其替换为值 现在假设我将一个字符串“novásmúsíc”传递给正则表达式将验证它的方法,如果找到任何特殊字符(我提到的那个),那么它应该用映射的字符替换。

请帮我处理正则表达式验证部分。

2 个答案:

答案 0 :(得分:3)

您可以通过Unicode normalization执行此操作,然后使用正则表达式删除连字标记。

请参阅此问题及其接受的答案:"Convert Unicode to ASCII without changing the string length (in Java)"

答案 1 :(得分:-1)

您可以使用此正则表达式[^ 0x00-0x7F]

String source=args[0];
Pattern p = Pattern.compile("[^0x00-0x7F]");
Matcher m = p.matcher(source);

if(map.containsKey(m.group()){
//Replace with the value here
}
else{
//put a default value for all
}

这仅基于您问题中提供的少量信息。您需要详细说明以获得更详细的答案。此正则表达式仅检查ASCII值(list here