Kotlin使用joinToString拼接非空值异常:返回错误结果求助
问题原因与解决方法
你写的代码错误使用了joinToString的参数:
joinToString的lambda参数是用来转换列表中的每个元素,而不是指定分隔符。你把分隔符" • "写在了转换lambda里,导致每个非空元素都被转换成了" • ",再加上默认的分隔符是逗号,最终就得到了「•, •」这样的结果。
正确写法
直接将分隔符作为joinToString的separator参数传入,不需要额外的转换lambda(如果元素本身不需要格式转换的话):
val formattedDesc = listOfNotNull(boardingZone, accessPoint, duration, description).joinToString(separator = " • ")
如果需要对元素做额外格式处理,再保留转换lambda,比如:
val formattedDesc = listOfNotNull(boardingZone, accessPoint, duration, description) .joinToString(separator = " • ") { it.uppercase() } // 示例:将每个元素转为大写
这样就能得到你预期的「120 • A3 • 30 minutes • Ticket」格式的字符串,空值会被listOfNotNull自动过滤。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

