替换$中的字符串

时间:2010-11-09 13:47:13

标签: java string

我使用以下行删除给定数据“DATA”中的所有$符号和空格:

String temp_data = DATA.replaceAll("$", "").replaceAll(" ", "");

但它不会删除$符号,只删除空格。有人知道为什么吗?

谢谢, 本雅明

3 个答案:

答案 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( "\\$| ", "" );