2015-08-20 3 views
-4

У меня есть строка, как следующийКак заменить подстроку (из строки

Want to Start (A) Programming and (B) Designing 

Я хочу заменить (A) с \n(A) и (B) с \n(B) Таким образом, ожидаемый результат будет как

Want to Start 
(A) Programming and 
(B) Designing 

Я попытался

stringcontent=stringcontent.replaceAll("(A)", "\n(A)"); 

Это не работает. После поиска в google я понял его из-за специальных символов ( и ) в строке.

Любой возможный способ решить эту проблему?

+2

Где специальный символ & ?! – SaNtoRiaN

+1

Вы читали немного больше, что делает эти персонажи особенными и как вы с ним справляетесь? Это все в документации replaceAll() –

+0

Я имею в виду - (&). надеюсь, поймите, что я имею в виду. –

ответ

4

Это регулярное выражение

String a = "Want to Start (A) Programming and (B) Designing"; 
String b = a.replaceAll("\\(", "\n\\("); 
System.out.println(b); 

приводит

Want to Start 
(A) Programming and 
(B) Designing 

Просто избежать скобки с \\ и все в порядке.

Edit: более конкретно, как указано ниже

a.replaceAll("(\\([AB]\\))", "\n$1"); соответствовать только (А) и (В) или

a.replaceAll("(\\(\\w\\))", "\n$1");, чтобы соответствовать любой (*) (символ слова)

+2

На вопрос, вы должны, вероятно, изменить регулярное выражение как «(\\ (\ w \\))», а замена должна быть «\ n $ 1», поэтому она соответствует только параметрам вопроса спросил. –

+0

Добавлено ваше предложение ответа, спасибо. – dly

0

у вас есть для выхода из специальных символов:

stringcontent=stringcontent.replaceAll("\\(A\\)", "\n(A)"); 
+0

Спасибо, чувак, его несколько правильный ответ. Здесь находится реальный stringcontent = stringcontent.replaceAll ("\\ (A \\)", "\ n \\ (A \\)"); –

0

В качестве метода первого аргумента replaceAll ожидает регулярное выражение и я настоятельно рекомендую вам прочитать о них.

stringcontent.replaceAll("\\((?=\\w\\))", "\n("); 

EDIT:

Предлагаемые ответы использовать жёстко прописанные письмо для проверки и замены (или предполагается, что нет никакого текста в фигурных скобках). Мой ответ использует \ w wildcard, который соответствует букве вместе с расширенной проверкой, которая гарантирует, что буква и закрывающая скобка следует за вашей скобой. Какой ответ на использование зависит от вас.

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