Проверка наличия пустых строк в Котлине

В Java нам всегда напоминалось использовать myString.isEmpty(), чтобы проверить, является ли строка пустой. Однако в Kotlin я нахожу, что вы можете использовать либо myString == "", либо myString.isEmpty() или даже myString.isBlank().

Есть ли какие-либо рекомендации/рекомендации по этому вопросу? Или это просто "все, что качает вашу лодку"?

Заранее благодарим за подачу моего любопытства.: D

Ответ 1

Не используйте myString == "", в java это будет myString.equals(""), что также не рекомендуется.

isBlank не совпадает с isEmpty, и это действительно зависит от вашего прецедента.

isBlank проверяет, что последовательность char имеет длину 0 или все индексы являются пробелами. isEmpty только проверяет, что длина последовательности char равна 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

Ответ 2

Для строки? (nullable String), я использую .isNullOrBlank()

Для String я использую .isBlank()

Почему? Поскольку большую часть времени я не хочу разрешать строки с пробелами (и .isBlank() проверяет пробелы, а также пустую строку). Если вам не нужны пробелы, используйте .isNullorEmpty() и .isEmpty() для String? и String соответственно.

Ответ 3

Используйте isEmpty, если вы хотите проверить, что строка точно равна пустой строке "".

Используйте isBlank, если вы хотите проверить, что строка пуста или состоит только из пробелов ("", " ").

Избегайте использования == "".

Ответ 4

Вы можете использовать isNullOrBlank() чтобы проверить, является ли строка нулевой или пустой. Этот метод считает пустые строки только пробелами.

Вот пример использования:

val s: String? = null
println(s.isNullOrBlank())
val s1: String? = ""
println(s1.isNullOrBlank())
val s2: String? = "     "
println(s2.isNullOrBlank())
val s3: String? = "  a "
println(s3.isNullOrBlank())

Результат этого фрагмента:

true
true
true
false

Ответ 5

В Котлине есть два метода. 1. isNullOrBlank() 2. isNullOrEmpty()

И разница в

    data = " " // this is a text with blank space 

    println(data.isNullOrBlank()?.toString())  //true
    println(data.isNullOrEmpty()?.toString())  //false