kotlin: joinToString函数:把集合拼接为字符串
一,功能
功能:实现把集合拼接为字符串的功能
语法:
fun <T> Iterable<T>.joinToString(
separator: CharSequence = ", ",
prefix: CharSequence = "",
postfix: CharSequence = "",
limit: Int = -1,
truncated: CharSequence = "...",
transform: ((T) -> CharSequence)? = null
): String
参数:
-
separator:分隔符,用于在各个元素之间插入一个字符串。默认值为 ", "。
-
prefix:前缀,加在生成的字符串的开头。默认值为 ""。
-
postfix:后缀,加在生成的字符串的结尾。默认值为 ""。
-
limit:限制输出元素的数量。如果集合元素数量超过这个值,那么超出部分将会被 truncated 参数指定的字符串替换。默认值为 -1,表示不限制。
-
truncated:当元素数量超过 limit 参数指定的值时,用于替换多余元素的字符串。默认值为 "..."。
-
transform:一个函数,用于将集合中的每个元素转换为字符串。如果不提供这个参数,那么将直接调用元素的 toString 方法进行转换。
二,例子:
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
val numbers = listOf(1, 2, 3, 4, 5)
//无参数
println(numbers.joinToString())
// 输出:1, 2, 3, 4, 5
//指定分隔符
println(numbers.joinToString(separator = "|"))
// 输出:1|2|3|4|5
//指定前缀后缀
println(numbers.joinToString(prefix = "[", postfix = "]"))
// 输出:[1, 2, 3, 4, 5]
//指定数量
println(numbers.joinToString(limit = 3))
// 输出:1, 2, 3, ...
//指定表示形式
println(numbers.joinToString(transform = { "Number $it" }))
// 输出:Number 1, Number 2, Number 3, Number 4, Number 5
}
运行结果:
三,例子:
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
// 如果不指定分隔符,使用默认参数,元素之间会以逗号加空格分隔
val numbers = listOf("one", "two", "three", "four")
println(numbers.joinToString())
//one, two, three, four
// 可以指定参数 separator, prefix, 以及 postfix
println(numbers.joinToString(separator = " | ", prefix = "start: ", postfix = ": end"))
// start: one | two | three | four: end
// 如果要控制集合元素本身的字符串表示形式, 可以指定一个 transform 函数
println(numbers.joinToString { it.uppercase() })
// ONE, TWO, THREE, FOUR
//首字母大写
println(numbers.joinToString { it.replaceFirstChar { it.titlecase(Locale.ROOT) } })
//One, Two, Three, Four
// 对于较大的集合, 可以指定 limit – 结果中包含的最大元素个数.
// 如果集合大小超过 limit 值, 所有超过的元素会被替换为 truncated 参数指定的值.
val numbers2 = (1..100).toList()
println(numbers2.joinToString(limit = 10, truncated = "<...>"))
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, <...>
}
运行结果: