Регулярное выражение для удаления нежелательных символов из строки

У меня есть требование, где мне нужно удалить ненужные символы для строки в Java. Например, строка ввода

Income ......................4,456
liability........................56,445.99

Я хочу вывод как

Income 4,456
liability 56,445.99

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

3 ответа

Решение

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

System.out.println("asdfadf ..........34,4234.34".replaceAll("[ ]*\\.{2,}"," "));

Для этого конкретного примера я мог бы использовать следующую замену:

String input = "Income ......................4,456";
input = input.replaceAll("(\\w+)\\s*\\.+(.*)", "$1 $2");
System.out.println(input);

Вот объяснение используемого шаблона:

(\\w+)   match AND capture one or more word characters
\\s*     match zero or more whitespace characters
\\.+     match one or more literal dots
(.*)     match AND capture the rest of the line

Две величины в скобках известны как группы захвата. Механизм регулярных выражений запоминает, что это было при сопоставлении, и делает их доступными по порядку, как $1 а также $2 использовать в строке замены.

Выход:

Income 4,456

демонстрация

Лучший способ сделать это, как:

String result = yourString.replaceAll("[-+.^:,]","");

Это заменит этот специальный символ ничем.

Другие вопросы по тегам