检查Kotlin中的字符串是否为空

kuuvgm7e  于 2022-11-25  发布在  Kotlin
关注(0)|答案(6)|浏览(248)

在Java中,我们总是被提醒要使用myString.isEmpty()来检查String是否为空。然而在Kotlin中,我发现你可以使用myString == ""myString.isEmpty(),甚至myString.isBlank()
在这方面有什么指导方针/建议吗?或者只是简单地“任何会让你的船摇晃的东西”?
提前感谢你满足了我的好奇心

kyxcudwk

kyxcudwk1#

不要使用myString == "",在java中这将是myString.equals(""),这也是不推荐的。
isBlankisEmpty不同,它实际上取决于您的用例。
x1M4N1X检查字符序列长度是否为0,或者所有索引是否为白色。x1M5N1X仅检查字符序列长度是否为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
2hh7jdfx

2hh7jdfx2#

对于String?(可空字符串)数据类型,我使用.isNullOrBlank()
对于String,我使用.isBlank()
为什么?因为大多数时候,我不想允许字符串包含空格(.isBlank()检查空格和空字符串)。如果你不关心空格,请使用.isNullorEmpty().isEmpty()分别表示String?String

vx6bjr1n

vx6bjr1n3#

当您要测试String是否完全相等空字串""时,请使用isEmpty
当您要测试String是否为空或仅包含空白(""" ")时,请使用isBlank
避免使用== ""

tvokkenx

tvokkenx4#

在Kotlin中有两种方法可用。
1.是否为空()
1.是否为空()
而区别在于:

data = " " // this is a text with blank space 
 
println(data.isNullOrBlank()?.toString())  //true
println(data.isNullOrEmpty()?.toString())  //false
zdwk9cvp

zdwk9cvp5#

你可以使用isNullOrBlank()来检查字符串是null还是空的。这个方法认为只有空格的字符串是空的。
下面是一个用法示例:

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
wgx48brx

wgx48brx6#

正如有人在评论中提到的,可以使用ifBlank,如下所示:

fun getSomeValue(): String {
  // ...
  val foo = someCall()
  return foo.ifBlank { "some-default" }
}

文件:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/if-blank.html

相关问题