我已尝试使用内置方法 String#replaceAll()从我的字符串内容中替换所有" $" 。但它没有用。
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("$", "");
OR
ss = ss.replaceAll("\\$", "");
答案 0 :(得分:8)
String.replaceAll
用于正则表达式。 '$'
是正则表达式中的特殊字符。
如果您不想使用正则表达式,请使用String.replace
,而不是String.replaceAll
。
答案 1 :(得分:7)
replaceAll
方法的第一个参数采用正则表达式,而不是文字字符串,而$
在正则表达式中具有特殊含义。
你需要通过在它前面放一个反斜杠来逃避$
;并且反斜杠需要加倍,因为它在Java字符串文字中具有特殊含义。
ss = ss.replaceAll("\\$", "");
答案 2 :(得分:-1)
可能不是最好的方法,而是一种解决方法,
public class CustomJsonObjectRequest extends JsonObjectRequest
{
public CustomJsonObjectRequest(int method, String url, JSONObject jsonRequest,Response.Listener listener, Response.ErrorListener errorListener)
{
super(method, url, jsonRequest, listener, errorListener);
}
@Override
public Map getHeaders() throws AuthFailureError {
Map headers = new HashMap();
headers.put("AppId", "xyz");
return headers;
}
}
然后连接每一个
String parts[] = ss.split("\\$");
然后在输出
中输入已替换的字符串