Как заменить дублирующиеся пробелы в String в Kotlin?

Скажем, у меня строка: "Test me" .

как его преобразовать в: "Test me" ?

Я пробовал использовать:

 string?.replace("\\s+", " ") 

но оказывается, что \\s является незаконным побегом в Котлине.

функция replace в Kotlin имеет перегрузки для шаблонов необработанных строк и регулярных выражений.

 "Test me".replace("\\s+", " ") 

Это заменяет необработанную строку \s+ , что является проблемой.

 "Test me".replace("\\s+".toRegex(), " ") 

Эта строка заменяет несколько пробелов одним пространством. Обратите внимание на явный toRegex() , который создает toRegex() из String , тем самым указывая перегрузку с шаблоном Regex .

Также есть перегрузка, которая позволяет вам производить замену матчей. Например, чтобы заменить их первым встреченным пробелом, используйте это:

 "Test\n\n me".replace("\\s+".toRegex()) { it.value[0].toString() } 

Кстати, если операция повторяется, рассмотрите возможность перемещения структуры шаблона из повторяющегося кода для повышения эффективности:

 val pattern = "\\s+".toRegex() for (s in strings) result.add(s.replace(pattern, " "))