Существует ли функция Java, которая анализирует завершенные символы?

Причина объяснена в части того раздела, который я выделил полужирным:

Строковых кавычек можно оставить с обратной косой чертой, , но обратная косая черта остается в строке; например, r"\"" литерал допустимой строки, состоящий из двух символов: обратная косая черта и двойная кавычка; r"\" не литерал допустимой строки (даже необработанная строка не может закончиться в нечетном числе обратных косых черт). А именно, необработанная строка не может закончиться в единственной обратной косой черте (так как обратная косая черта вышла бы из следующего символа кавычки). Обратите внимание также, что единственная обратная косая черта, сопровождаемая новой строкой, интерпретируется как те два символа как часть строки, не как продолжение строки.

, Таким образом, необработанные строки не являются 100%-ми сырыми данными, существует все еще некоторая элементарная обработка обратной косой черты.

8
задан Daniel Rikowski 25 August 2009 в 14:50
поделиться

2 ответа

Anthony is 99% справа - поскольку обратная косая черта также является зарезервированным символом в регулярных выражениях, ее нужно экранировать второй раз:

result = myString.replaceAll("\\\\n", "\n");
4
ответ дан 5 December 2019 в 12:10
поделиться

Просто используйте собственный метод replaceAll для строк.

result = myString.replaceAll("\\n", "\n");

Однако, если вы хотите сопоставить все escape-последовательности, вы можете использовать Matcher. См. http://www.regular-expressions.info/java.html для очень простого примера использования Matcher.

Pattern p = Pattern.compile("\\(.)");
Matcher m = p.matcher("This is tab \\t and \\n this is on a new line");
StringBuffer sb = new StringBuffer();
while (m.find()) {
   String s = m.group(1);
   if (s == "n") {s = "\n"; }
   else if (s == "t") {s = "\t"; } 
   m.appendReplacement(sb, s);
}
m.appendTail(sb);
System.out.println(sb.toString());

Вам просто нужно сделать присвоение s более сложным в зависимости от числа и тип побегов, с которыми вы хотите справиться. (Предупреждение, это воздушный код, я не разработчик Java)

1
ответ дан 5 December 2019 в 12:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: