Java 忽略字符串匹配中的特殊字符
Java ignore special characters in string matching
我想匹配 java 中的两个字符串,例如。
文本:János
搜索表达式:Janos
因为我不想替换所有特殊字符,所以我想我可以让 á
成为通配符,这样一切都会匹配这个字符。例如,如果我在 János
中搜索 Jxnos
,它应该会找到它。当然,文本中可以有多个特殊字符。有没有人知道我如何通过任何模式匹配器实现这一点,或者我必须逐个比较一个字符?
使用模式和匹配器 类 以及 J\Snos
作为正则表达式。 \S
匹配任何非 space 字符。
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
class 的更详尽的方法:Is there a way to get rid of accents and convert a whole string to regular letters?
我想匹配 java 中的两个字符串,例如。
文本:János
搜索表达式:Janos
因为我不想替换所有特殊字符,所以我想我可以让 á
成为通配符,这样一切都会匹配这个字符。例如,如果我在 János
中搜索 Jxnos
,它应该会找到它。当然,文本中可以有多个特殊字符。有没有人知道我如何通过任何模式匹配器实现这一点,或者我必须逐个比较一个字符?
使用模式和匹配器 类 以及 J\Snos
作为正则表达式。 \S
匹配任何非 space 字符。
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
class 的更详尽的方法:Is there a way to get rid of accents and convert a whole string to regular letters?