replace
function w Kotlinie ma przeciążenia dla nieprzetworzonych łańcuchów i wzorów regex.
"Test me".replace("\\s+", " ")
Zastępuje surowy ciąg znaków \s+
, który stanowi problem.
"Test me".replace("\\s+".toRegex(), " ")
Ta linia zastępuje wiele białych znaków pojedynczym odstępem. Należy zwrócić uwagę na jawne wywołanie toRegex()
, które powoduje, że Regex
z String
, określając w ten sposób przeciążenie z Regex
jako wzorzec.
Istnieje również przeciążenie, które umożliwia wyprodukowanie zamiennika z zapałek. Na przykład, aby wymienić je na pierwszej spacji napotkanego, użyj tego:
"Test\n\n me".replace("\\s+".toRegex()) { it.value[0].toString() }
Nawiasem mówiąc, jeśli operacja powtarza się, należy rozważyć przeniesienie budowę wzór wyjścia z wielokrotnym kodu dla lepszej wydajności:
val pattern = "\\s+".toRegex()
for (s in strings)
result.add(s.replace(pattern, " "))
Pracował jak urok! –
Zmarnowałem 2 godziny na ten temat. Dziękuję bardzo! –
@ user3601872, nie ma za co. – hotkey