Ответ 1
функция replace
в Kotlin имеет перегрузки для шаблонов необработанных строк и регулярных выражений.
"Test me".replace("\\s+", " ")
Это заменяет необработанную строку \s+
, что является проблемой.
"Test me".replace("\\s+".toRegex(), " ")
Эта строка заменяет несколько пробелов одним пространством. Обратите внимание на явную toRegex()
вызов, который делает Regex
из 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, " "))