我有一个输入,在$和值之间有一个空格,我想删除空格.这段代码:
System.out.println("This costs $ 5 even.".replaceAll("\\$ ", "$"));
Run Code Online (Sandbox Code Playgroud)
应该打印出来:
This costs $5 even.
Run Code Online (Sandbox Code Playgroud)
但它引发了一个例外:
Illegal group reference: group index is missing
java.lang.IllegalArgumentException
at java.util.regex.Matcher.appendReplacement(Matcher.java:819)
at java.util.regex.Matcher.replaceAll(Matcher.java:955)
at java.lang.String.replaceAll(String.java:2223)
at DollarTest.test(DollarTest.java:18)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
pp_*_*pp_ 11
只需使用replace():
System.out.println("This costs $ 5 even.".replace("$ ", "$"));
Run Code Online (Sandbox Code Playgroud)
问题是在正则表达式替换字符串中,这$是特殊的.它应该用于指代正则表达式本身的捕获组.
你需要逃脱它:
.replaceAll("\\$ ", "\\$")
Run Code Online (Sandbox Code Playgroud)
但正如@pp_提到的那样,你最好.replace()在这里使用平原.