Java处理昵称存在特殊符号replaceAll报错直接上代码
public static void main(String[] args) throws Exception {
String src = "亲爱的,#nickname#,xxxxxxxxxxxxxx!";
String name = "$为时#~已晚";
String first = placeAll(src, "#nickname#", name);
System.out.println(first);
}
运⾏之后报错
java.lang.IllegalArgumentException: Illegal group reference
报错原因:
字符串中出现“$”,会按照$1$2的分组模式进⾏匹配。
当“$”后跟的不是整数的时候就会抛出“Illegal group reference”的异常
处理办法:
⽤JDK提供的⽅法,对特殊字符进⾏处理
public static void main(String[] args) throws Exception {
String src = "亲爱的,#nickname#,xxxxxxxxxxxxxx!";
String name = "$为时#~已晚";
name = Matcher.quoteReplacement(name);
String first = placeAll(src, "#nickname#", name);
System.out.println(first);
}
运⾏后结果正常:
后续操作:
百度搜索⼀批特殊符号,字符。。。。
测试后发现只有在处理字符串中存在$时 会报错
本来是打算⽤正则表达式匹配特殊字符的
结果只有$符 会报错
⽤ains("$")  判断是否存在
if(ains("$") ){
昵称代码转换name = Matcher.quoteReplacement(name);
}
在执⾏后续操作也可以

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。