2013-02-21 360 views
3

我有一个字符串数组,我从我正在阅读的.csv文件创建。然后我想解析我将用于'字符的值,并用\替换它,因为我将它输出到JavaScript文件。String.replace()不起作用

下面是我使用的代码:但是这是不工作

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]);   
} 

。我在做替换之后得到相同的字符串。

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

我很感谢在这个问题上的任何帮助。

+2

的Java转义字符反斜杠过。使用'“\\'”'。 – sp00m 2013-02-21 15:54:50

回答

9

尝试这样的:

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

反斜线必须是 “逃脱”。

line[4] = line[4].replace("'", "\'");情况下,部分\'被转换成的事实,"'"相同"\'"只是'

+0

而我很蠢谢谢你。 – Hirthas 2013-02-21 16:04:20

+1

你不笨。永远不要以这种方式自称自己,思想是物质的。我们都有一个可以随时学习的领域。 – user 2013-02-21 16:05:41

6

你遭遇犯规。它们是相同的字符串(单个字符,只是一个撇号) - 转义是允许字符字面'\''

你想:

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

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

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

0

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

1

你应该添加反斜杠\这样的事情

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

,因为一个左斜线\被转义符