2013-02-21 5 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

ответ

9

Попробуйте так:

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

Этот символ должен быть "убежали".

В случае line[4] = line[4].replace("'", "\'"); часть \' превращается просто '

+0

И я немой Спасибо. – Hirthas

+1

Ты не тупой. Никогда не называйте себя таким образом, мысли материальны. У всех нас есть поле для изучения в любое время. – user

6

Вы падающим фол на то, что "'" такой же, как "\'". Они являются одной и той же строкой (один символ, просто апостроф) - побег есть, чтобы дать знак литерал '\''.

Вы хотите:

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

Так что теперь вы избежать обратной косой черты, вместо апострофа. Таким образом, вы заменяете апостроф обратным слэшем-то-апострофом, который вы хотели.

См. JLS section 3.10.6 для получения информации об экранировании символов и строковых литералов.

0

Ваша проблема в том, что проблема с выходом. Попробуйте \\ заменить одну косую черту.

1

вы должны добавить обратный слеш \ что-то вроде этого

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

, потому что один левый слэш \ является маскирующим

Смежные вопросы