2013-02-21 352 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("'", "\\'"); 

,因爲一個左斜線\被轉義符