如何在 Kotlin 的下一行中过滤值

How to filter value in next line in Kotlin

嘿,我正在处理对象列表。我想一个一个地迭代整个对象并在每一行中打印每个索引值。我尝试了一些代码,但没有得到正确的输出。

StringPrint.kt

fun main() {
    val newString = createData().joinToString("\n") { "${it.title?: ""} ${it.status?: ""}".trim() }
    println(newString)
}

data class Event(val title: String? = null, val status: String? = null)

fun createData() = listOf(
    Event("text 1", "abc"),
    Event("text 2", "abc"),
    Event("text 3", "abc"),
    Event("text 4", "abc"),
    Event("", null),
    Event(null, ""),
    Event(null, "3"),
    Event("null", ""),
    Event("456", "89")
)

输出

text 1 abc
text 2 abc
text 3 abc
text 4 abc
Space Space
Space Space
3
null
456 89

正如您在输出中看到的那样,我添加了 space 关键字,这意味着存在空白字符并且 null。这些我都不要。

E预期输出

text 1 abc
text 2 abc
text 3 abc
text 4 abc
3
456 89

根据@lukas.j的建议我尝试了这个

val newString = createData()
        .filterNot { it.title.isNullOrBlank() || it.status.isNullOrBlank() }
        .joinToString("\n") { "${it.title?: ""} ${it.status?: ""}".trim() }
 println(newString)

Output.kt

text 1 abc
text 2 abc
text 3 abc
text 4 abc
456 89

它没有在控制台中打印值 3。

val newString = createData()
  .filterNot { it.title.isNullOrBlank() && it.status.isNullOrBlank() }
  .joinToString("\n") { "${it.title?: ""} ${it.status?: ""}".trim() }