Java 忽略字符串匹配中的特殊字符



我想在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 类的更精细的方法:有没有办法摆脱重音并将整个字符串转换为常规字母?

相关内容

  • 没有找到相关文章

最新更新