我使用以下行删除给定数据“DATA”中的所有$符号和空格:
String temp_data = DATA.replaceAll("$", "").replaceAll(" ", "");
但它不会删除$符号,只删除空格。有人知道为什么吗?
谢谢, 本雅明
答案 0 :(得分:9)
第一个参数replaceAll采用的是正则表达式,正则表达式引擎将$视为代表行尾的特殊字符。像这样逃避它:
String temp_data = DATA.replaceAll("\\$", "").replaceAll(" ", "");
以下是使用replaceAll和replace:
的示例import junit.framework.TestCase;
public class ReplaceAllTest extends TestCase {
private String s = "asdf$zxcv";
public void testReplaceAll() {
String newString = s.replaceAll("\\$", "X");
System.out.println(newString);
assertEquals("asdfXzxcv", newString);
}
public void testReplace() {
String newString =s.replace("$", "");
System.out.println(newString);
assertEquals("asdfzxcv", newString);
}
}
答案 1 :(得分:4)
replaceAll
采用正则表达式 - “$”在正则表达式中具有特殊含义。
只需尝试replace
:
String temp_data = DATA.replace("$", "").replace(" ", "");
答案 2 :(得分:3)
String.replaceAll
使用正则表达式来匹配应替换的字符。但是,在正则表达式中,$
是一个特殊符号,表示字符串的结尾,因此它不会被识别为字符本身。
您可以转义$
符号,也可以只使用适用于普通字符串的String.replace
方法:
String temp_data = DATA.replace( "$", "" ).replace( " ", "" );
// or
String temp_data = DATA.replaceAll( "\\$", "" ).replaceAll( " ", "" );
// or even
String temp_data = DATA.replaceAll( "\\$| ", "" );