2017-07-26 29 views
5

W Javie, zawsze mieliśmy przypomnienia, aby użyć myString.isEmpty(), aby sprawdzić, czy ciąg jest pusty. W Kotlin jednak odkryłem, że możesz użyć albo myString == "" albo myString.isEmpty() lub nawet myString.isBlank().Sprawdzanie, czy ciąg znaków jest pusty w Kotlin

Czy istnieją jakieś wytyczne/zalecenia w tej sprawie? A może po prostu "wszystko, co kołysze twoją łódź"?

Z góry dziękuję za karmienie mojej ciekawości. : D

Odpowiedz

9

Nie używaj myString == "", w java będzie to myString.equals(""), co również nie jest zalecane.

isBlank to nie to samo co isEmpty i to naprawdę zależy od twojego przypadku użycia.

isBlank sprawdza, czy sekwencja znaków ma długość 0 lub czy wszystkie indeksy są białymi znakami. isEmpty sprawdza tylko, że długość sekwencji char jest 0.

/** 
* Returns `true` if this string is empty or consists solely of whitespace characters. 
*/ 
public fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } 


/** 
* Returns `true` if this char sequence is empty (contains no characters). 
*/ 
@kotlin.internal.InlineOnly 
public inline fun CharSequence.isEmpty(): Boolean = length == 0 
+0

Zdecydowanie zapomniałem o 'myString.equals (" ")'. Sądzę, że nigdy nie robiłem tego w Javie, ponieważ powiedziano mi, żeby tego nie robił. Dzięki za przypomnienie i jasne wyjaśnienie! – Aba

2

Zastosowanie isEmpty gdy chcesz sprawdzić, czy ciąg jest dokładnie równy ciąg pusty "".

Użyj isBlank, jeśli chcesz przetestować, czy ciąg znaków jest pusty lub składa się tylko z białych znaków ("", " ").

Należy unikać używania == "".

+0

Doceniam, że to bardzo proste. Mogłem tylko dać niewidzialny awans na razie, więc okrzyki! :) – Aba

4

Na ciąg? (Pustych String) typ danych, używam .isNullOrBlank()

STRING, używam .isBlank()

Dlaczego? Ponieważ przez większość czasu nie chcę dopuszczać łańcuchów z białymi znakami (i .isBlank() sprawdza białe znaki oraz pusty łańcuch). Jeśli nie dbasz o białe znaki, użyj .isNullorEmpty() i .isEmpty() dla ciągu? i String, odpowiednio.

+1

Zawsze myślałem o używaniu isBlank(), ale czy wiesz, że hasła mogą być po prostu spacjami? Oczywiście zależy to od tego, na co pozwolisz. Dzięki za przypomnienie o Nullable String! Oto niewidoczny upvote. : D – Aba

+0

W zależności od sytuacji, ale zakładam, że tylko puste miejsce byłoby zabronione przez większość stron internetowych/backendów. Z drugiej strony, nigdy tego nie próbowałem! Ale +1 dla ekstremalnych przypadków –

Powiązane problemy