我想在java中匹配两个字符串,例如。
文本: János
搜索表达式:Janos
由于我不想替换所有特殊字符,因此我认为我可以将á
设置为通配符,以便所有内容都与该字符匹配。例如,如果我在János
中搜索Jxnos
,它应该找到它。当然,文本中可能有多个特殊字符。有没有人知道我如何通过任何模式匹配器来实现这一点,或者我必须逐个字符比较?
使用模式和匹配器类,J\Snos
作为正则表达式。 \S
匹配任何非空格字符。
String str = "foo János bar Jxnos";
Matcher m = Pattern.compile("J\Snos").matcher(str);
while(m.find())
{
System.out.println(m.group());
}
输出:
János
Jxnos
一个可能的解决方案是在Apache Commons StringUtils.stripAccents(input)方法的帮助下去除重音:
String input = StringUtils.stripAccents("János");
System.out.println(input); //Janos
确保还阅读基于 Normalizer
类的更精细的方法:有没有办法摆脱重音并将整个字符串转换为常规字母?