【发布时间】:2016-06-20 20:31:21
【问题描述】:
我已尝试使用内置方法 String#replaceAll() 来替换我的 String 内容中的所有 "$"。但它不起作用。
String ss = "HELLO_$_JAVA";
System.out.println(ss.indexOf("$"));
System.out.println(ss);
ss = ss.replaceAll("$", "");
System.out.println(ss);// 'HELLO__JAVA' is expected
输出:
6
HELLO_$_JAVA
HELLO_$_JAVA
预期输出:
6
HELLO_$_JAVA
HELLO__JAVA
编辑: 虽然Java regular expressions and dollar sign 涵盖了答案,但我的问题仍然可能对使用 String#replaceAll() 时面临同样问题的人有所帮助。 和 Difference between String replace() and replaceAll() 也可能会有所帮助。
该问题的两种可能解决方案是
ss = ss.replace("$", "");
或
ss = ss.replaceAll("\\$", "");
【问题讨论】:
-
为什么
HELLO_$_JAVA应该是预期的输出?_应该从哪里来? -
我觉得很奇怪
"HELLO$JAVA"字符串被打印为HELLO_$_JAVA -
就像前面的 cmets 所暗示的那样,您的代码与您显示的输出不匹配。这不是它的工作方式。
-
替换所有使用正则表达式。使用 Pattern.quote("$")。
-
很多DOWNVAOTE ...我没想到:-o
标签: java