Удалите все в скобках Java с помощью регулярных выражений - PullRequest
9 голосов
/ 21 ноября 2011

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

name.replaceAll("\\(.*\\)", "");

По какой-то причине это имя остается без изменений.Что я делаю не так?

Ответы [ 5 ]

23 голосов
/ 21 ноября 2011

Строки неизменны.Вы должны сделать это:

name = name.replaceAll("\\(.*\\)", "");

Редактировать: Кроме того, поскольку .* является жадным, он убьет столько, сколько сможет.Так что "(abc)something(def)" будет превращено в "".

8 голосов
/ 22 апреля 2015

Как упомянуто Джелвисом, ". *" Выбирает все и преобразует "(ab) ok (cd)" в ""

В следующих случаях работает версия "(ab) ok (cd)"->" ОК ", выбрав все, кроме закрывающей скобки и удалив пробелы.

test = test.replaceAll("\\s*\\([^\\)]*\\)\\s*", " ");
3 голосов
/ 21 ноября 2011

String.replaceAll() не редактирует исходную строку, но возвращает новую.Так что вам нужно сделать:

name = name.replaceAll("\\(.*\\)", "");
2 голосов
/ 21 ноября 2011

Если вы прочитаете Javadoc для String.replaceAll(), вы заметите, что оно указывает, что полученная строка является возвращаемым значением .

В общем,String s неизменны в Java;они никогда не меняют значение.

1 голос
/ 14 февраля 2017

Я использую эту функцию:

public static String remove_parenthesis(String input_string, String parenthesis_symbol){
    // removing parenthesis and everything inside them, works for (),[] and {}
    if(parenthesis_symbol.contains("[]")){
        return input_string.replaceAll("\\s*\\[[^\\]]*\\]\\s*", " ");
    }else if(parenthesis_symbol.contains("{}")){
        return input_string.replaceAll("\\s*\\{[^\\}]*\\}\\s*", " ");
    }else{
        return input_string.replaceAll("\\s*\\([^\\)]*\\)\\s*", " ");
    }
}

Вы можете назвать это так:

remove_parenthesis(g, "[]");
remove_parenthesis(g, "{}");
remove_parenthesis(g, "()");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...