Как заменить последовательность заданных в разном порядке спец символов одним пробелом?

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

Вот мой вариант:

string.replace("[\n\r\t\u000B\u000C]*".toRegex(), " ");

Проблема в том, что он подставляет пробел после каждого символа почему-то. Где я ошибаюсь?


Ответы (1 шт):

Автор решения: Podushkoved

Символы в квадратных скобках [ ] - это символьный класс. Он подразумевает вхождение в искомую комбинацию любого из перечисленных символов.

[ ]* - количество символов 0 и более;

[ ]+ - количество символов 1 и более;

[ ] - только один символ из перечисленных.


В данном случае приоритетный вариант - [ ]+, иначе при замене будет много пробелов.


См. Регулярные выражения (regular expressions)

→ Ссылка