2013-07-11 5 views
-1

Спасибо всем, кто может мне помочь. Мне нужно удалить все записи в строке, начиная с «{» и заканчивая на «}», включая скобки.Заменить все {любые символы} в строке Java

Я пытался что-то вроде этого:

value.replaceAll("{.}","") 
+0

вам нужно показать нам какой-то код, который вы уже пробовали! – sanbhat

+0

Вы должны дать ему шанс, много отличных вещей, которые помогут вам в «так называемом ...» Интернете. :) –

+0

Этот вопрос неоднозначен, и разные ответы интерпретируют его по-разному. –

ответ

1
value = value.replaceAll("\\{.*\\}","")); 

С { и } специальные символы, вы должны использовать \\, чтобы избежать их.

NB: вы не указали, нужно ли иметь дело с вложенными скобками или рядом скобок. Вышеупомянутое решение просто удаляет все символы, от { до } (также удаляет сами скобки).

+0

Стив, Спасибо за вашу помощь. – k3naks

+2

К сожалению, «. *» Нетерпеливо, так что это будет соответствовать всем, что существует между первым «{» и последним «}» –

+0

@ user2561089. Поскольку вы новичок, вы должны взять [тур] (http://stackoverflow.com/about). –

0

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

value.replaceAll("\\{[^\\}]*\\}", ""); 

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

Если у вас вложенные скобки, это не сработает, и другие решения здесь не будут.

1

В настоящий момент вы ищете фигурные скобки с одним символом внутри, за исключением того, что вы не избежали фигурных скобок, которые имеют особое значение в регулярных выражениях. Так должно быть: \\{.*\\} (* предназначен для: совпадения как можно большего количества символов).

Но если у вас есть вход вроде: {ab}cd{ef}, и вы хотите получить cd, вам нужно использовать нежирный оператор или вы будете соответствовать всей строке.

В этом случае, вы можете попробовать это:

value = value.replaceAll("\\{.*?\\}",""); 
0

Попробуйте

String a="{hi}a"; 
    String arr=a.replaceAll("\\{.*?\\}",""); 
    System.out.println(arr); 
+0

было неправильно, когда они были опущены. Тебе не на что жаловаться. –

0
value = value.replaceAll("\\{.*\\}","")); 

В фигурных скобках специальный characters.So вы можете попробовать это.

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