如何在字符串中的$后删除空格?

jam*_*iss 0 java regex

我有一个输入,在$和值之间有一个空格,我想删除空格.这段代码:

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)

  • @ james.garriss我的解决方案适用于任何数量的替换. (5认同)

fge*_*fge 6

问题是在正则表达式替换字符串中,这$是特殊的.它应该用于指代正则表达式本身的捕获组.

你需要逃脱它:

.replaceAll("\\$ ", "\\$")
Run Code Online (Sandbox Code Playgroud)

正如@pp_提到的那样,你最好.replace()在这里使用平原.