Проверка наличия пустых строк в Котлине
В 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