2017-07-26 3 views
5

In Java wurde immer daran erinnert, myString.isEmpty() zu verwenden, um zu überprüfen, ob ein String leer ist. In Kotlin finde ich jedoch, dass Sie entweder myString == "" oder myString.isEmpty() oder sogar myString.isBlank() verwenden können.Überprüfen, ob die Zeichenfolge in Kotlin leer ist

Gibt es irgendwelche Richtlinien/Empfehlungen? Oder ist es einfach "irgendetwas, das dein Boot rockt"?

Vielen Dank im Voraus für meine Neugier. : D

Antwort

9

Verwenden Sie nicht myString == "", in Java wäre dies myString.equals(""), die auch nicht empfohlen wird.

isBlank ist nicht dasselbe wie isEmpty und es hängt wirklich von Ihrem Anwendungsfall ab.

isBlank überprüft, ob eine Zeichenkettenlänge 0 ist oder dass alle Indizes Leerräume sind. isEmpty prüft nur, dass die char Sequenzlänge 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

Ich habe definitiv 'myString.equals (" ")' vergessen. Ich schätze, weil ich das nie in Java mache, da mir gesagt wurde, ich solle es nicht tun. Danke für die Erinnerung und klare Erklärung! – Aba

2

Verwenden isEmpty ist, wenn Sie testen möchten, dass ein String auf den leeren String "" genau gleich ist.

Verwenden Sie isBlank, wenn Sie testen möchten, ob ein String leer ist oder nur aus Leerzeichen besteht ("", " ").

Vermeiden Sie die Verwendung von == "".

+0

Ich weiß es zu schätzen, dass Sie es sehr einfach gesagt haben. Ich konnte jedoch nur eine unsichtbare Aufwertung für jetzt geben, also Prost! :) – Aba

4

Für String? (Nullable-String) Datentyp, verwende ich .isNullOrBlank()

Für String, verwende ich .isBlank()

Warum? Weil ich meistens Strings mit Whitespace (und .isBlank() checks whitespace sowie leere String) nicht zulassen möchte. Wenn Sie sich nicht für Leerzeichen interessieren, verwenden Sie .isNullorEmpty() und .isEmpty() für String? bzw. Zeichenfolge.

+1

Ich habe auch gedacht, immer mit isBlank(), aber wussten Sie, dass Passwörter eigentlich nur Leerzeichen sein könnten? Das hängt natürlich davon ab, was Sie zulassen würden. Danke für die Erinnerung an NULL String! Hier ist eine unsichtbare Verbesserung. : D – Aba

+0

Hängt von der Situation ab, aber ich würde annehmen, dass ein einziges Leerzeichen-Passwort von den meisten Websites/Backends nicht zugelassen würde. Andererseits habe ich es noch nie probiert! Aber +1 für extreme Randfälle –