2016-05-06 19 views

Odpowiedz

26

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, " ")) 
+0

Pracował jak urok! –

+1

Zmarnowałem 2 godziny na ten temat. Dziękuję bardzo! –

+0

@ user3601872, nie ma za co. – hotkey

Powiązane problemy