String.replace()不起作用

时间:2013-02-21 15:52:33

标签: java string replace

我所拥有的是一个字符串数组,我正在从我正在阅读的.csv文件中创建。然后我想解析我将用于'字符的值并用\替换它',因为我将其输出到javascript文件。

以下是我正在使用的代码:

while ((thisLine = myInput.readLine()) != null) {
        String[] line = thisLine.split("\t");                       
            if(line[4].indexOf("'") > -1){
                System.out.println(line[4]);
                line[4] = line[4].replace("'", "\'");
                System.out.println(line[4]);
            }               
            brand.add(line[4]);         
}

然而这不起作用。在我进行替换后,我得到了相同的字符串。

这是因为字符串数组有问题吗?

我感谢你在这件事上提供任何帮助。

4 个答案:

答案 0 :(得分:9)

试试这样:

line[4] = line[4].replace("'", "\\'");

反斜杠必须“转义”。

如果line[4] = line[4].replace("'", "\'");,则\'部分转换为'

答案 1 :(得分:6)

"'""\'"相同,这是违背的事实。它们是相同的字符串(单个字符,只是一个撇号) - 转义是允许字符字面为'\''

你想:

line[4] = line[4].replace("'", "\\'");

所以现在你正在逃避反斜杠,而不是撇号。所以你用反斜杠替换撇号 - 然后撇号,这就是你想要的。

有关字符和字符串文字中转义的详细信息,请参阅JLS section 3.10.6

答案 2 :(得分:1)

你应该添加斜杠\类似这样的东西

line[4] = line[4].replace("'", "\\'");

因为一个左斜线\是转义字符

答案 3 :(得分:0)

您的问题看起来像是一个逃避问题。尝试\\替换单个反斜杠。