3

我拥有的是一个字符串数组,它是从我正在阅读的 .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

4 回答 4

9

试试这样:

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

反斜杠必须“转义”。

如果line[4] = line[4].replace("'", "\'");零件\'被转换为只是'

于 2013-02-21T15:53:38.480 回答
6

您违反了"'"与 相同的事实"\'"。它们是相同的字符串(单个字符,只是一个撇号)- 转义是为了允许'\''.

你要:

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

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

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

于 2013-02-21T15:53:55.813 回答
1

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

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

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

于 2013-02-21T15:55:40.047 回答
0

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

于 2013-02-21T15:54:50.350 回答