Заменить \ F \ в строке Java - PullRequest
       1

Заменить \ F \ в строке Java

0 голосов
/ 28 января 2011

Я борюсь с заменой строк, содержащих специальные символы регулярных выражений. Я получил список разделителей из файла, и мне нужно заменить экранированную форму этих символов на символы без экранирования.

Таблица сопоставления следующая. Обратите внимание, что escape-символ известен после разбора файла, поэтому я не могу жестко закодировать строки замены.

escapeChar + F + escapeChar <=> sep1
escapeChar + S + escapeChar <=> sep2
escapeChar + T + escapeChar <=> sep3
escapeChar + R + escapeChar <=> sep4
escapeChar + E + escapeChar <=> escapeChar

Допустим, что после разбора файла у вас есть следующие разделители

sep1 = | 
sep2 = ^
sep3 = &
sep4 = $
sep5 = \

Таким образом, когда вы анализируете файл и вводите следующее \F\\S\\T\\R\\E\. Следует перевести на |^&$\

Следующий код не работает (я только что попробовал с первым разделителем):

String sep1 = "|";
String escapeChar = "\\";
String x = "\\F\\\\S\\\\T\\\\R\\\\E\\";
x.replaceAll(Pattern.quote(escapeChar) + "F"
        + Pattern.quote(escapeChar), sep1);
System.out.println(x);

1 Ответ

2 голосов
/ 28 января 2011

Строки неизменны в Java. String.replaceAll возвращает новую строку с выполненными заменами вместо изменения содержимого существующей строки. Попробуйте:

x = x.replaceAll(...);

Кажется, это работает нормально, если я понял, что ты пытался сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...