用逗号分隔附加字符串的有效方法[Kotlin]

时间:2017-12-21 15:03:53

标签: kotlin

我想知道是否有以逗号分隔不同字符串作为分隔符的有效方法

Java8中有StringUtils.join(java.lang.Iterable,char)

对于Kotlin我只找到joinToString,它从数组/列表转换为字符串。据我了解,joinToString转换整个列表/数组。如果我想将几个项目从数组转换为逗号分隔的字符串而不是所有这些字符串怎么办?如何做到这一点? Kotlin是否有一些简短而优雅的东西(显然,我可以为此做出自己的功能,但我只是想知道)。

list.forEachIndexed { index, item ->
   if (item.isGreen) {
       ...        
   }
}

2 个答案:

答案 0 :(得分:17)

val greenString = list.filter(ItemClass::isGreen).joinToString()

此处, ItemClass 是定义isGreen函数或属性的项目类型。 ItemClass::isGreen是对此方法/属性的引用。

您也可以使用lambda获得相同的效果(参见其他答案)。

编辑:您可以使用transform参数指定对象在joinToString函数中如何表示为String。
因为这是最后一个参数,所以可以在常规括号之外给出:

list.filter(ItemClass::isGreen).joinToString() { it.content.text }

你甚至可以把括号全部放在一起,但它们可能会被用于其他论点 你不能在这里使用引用样式(::),因为它是一个复杂的表达式,而不是对特定方法或属性的直接引用。

答案 1 :(得分:6)

对于此示例,您可以执行此操作:

list
    .filter { it.isGreen }
    .joinToString()