主页 > 人工智能  > 

解决`Illegalgroupreference:groupindexismissing`的两种方式

解决`Illegalgroupreference:groupindexismissing`的两种方式

说明:记录使用String API的错误,报错信息如下:

java.lang.IllegalArgumentException: Illegal group reference: group index is missing at java.util.regex.Matcher.appendReplacement(Matcher.java:819) ~[?:1.8.0_402] at java.util.regex.Matcher.replaceAll(Matcher.java:955) ~[?:1.8.0_402] at java.lang.String.replaceAll(String.java:2223) ~[?:1.8.0_402] 场景

在使用String的这个API,来替换字符串的时候抛出的,如下:

public static void main(String[] args) { String str = "我对钱不感兴趣"; System.out.println(str.replaceAll("钱", "美金($)")); }

原因是使用了美元符号($),美元符号是在底层替换的时候,是有特殊含义的,不能出现在第二个参数里;

解决 方法一

可以在替换前,使用APIMatcher.quoteReplacement过一遍,如下:

public static void main(String[] args) { String str = "我对钱不感兴趣"; System.out.println(str.replaceAll("钱", Matcher.quoteReplacement("美金($)"))); } 方法二

或者手动添加转义符,如下:

public static void main(String[] args) { String str = "我对钱不感兴趣"; System.out.println(str.replaceAll("钱","美金(\\$)")); }

两种效果一样,如果是确定的字符串,可以用方法二,手动转义,如果是不确定的,可以使用方法一;

标签:

解决`Illegalgroupreference:groupindexismissing`的两种方式由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“解决`Illegalgroupreference:groupindexismissing`的两种方式