当前位置: 首页 > news >正文

有趣的 Kotlin 0x11: joinToString,你真的了解嘛?

前言

之前使用 joinToString 函数也就是用逗号连接集合元素形成字符串,也没有细看它的参数,但是今天和 ChatGPT 聊天时,发现它给我输出了诸多内容。

joinToString

joinToString()是Kotlin中一个非常有用的函数,它可以将集合的元素连接成一个字符串,并且可以自定义连接符号、前缀、后缀等参数。

具体来说,joinToString() 函数有以下几个参数:

  • separator:用于连接每个元素的字符串。
  • prefix:添加到整个字符串的开头的字符串。
  • postfix:添加到整个字符串的结尾的字符串。
  • limit:指定输出的元素数量的上限。
  • truncated:添加到最后一个元素之后的字符串,当元素数量超过上限时使用。
  • transform:将每个元素转换为字符串的函数。

下面是一个使用 joinToString() 函数将整数列表中的元素连接成字符串的示例:

val list = listOf(1, 2, 3, 4, 5)
val result = list.joinToString(separator = ", ", prefix = "[", postfix = "]")
println(result) // 输出:[1, 2, 3, 4, 5]

在上面的示例中,我们使用 joinToString() 函数将整数列表中的元素连接成一个字符串,并使用逗号加空格作为分隔符。我们还使用方括号将整个字符串括起来,以表示这是一个整数列表。最终结果为 [1, 2, 3, 4, 5]

需要注意的是,joinToString() 函数不仅适用于整数列表,还适用于任何类型的集合。此外,您可以使用lambda表达式作为 transform 参数,以将元素转换为需要的字符串表示形式。例如,下面的示例将列表中的整数转换为其平方的字符串表示形式:

val list = listOf(1, 2, 3, 4, 5)
val result = list.joinToString(separator = ", ", transform = { it * it }.toString())
println(result) // 输出:1, 4, 9, 16, 25

在这个示例中,我们使用lambda表达式将列表中的每个元素转换为其平方的字符串表示形式。结果为1, 4, 9, 16, 25

再看一个例子了解下 truncated 参数如何使用 ?

truncated 参数是 joinToString() 函数的一个可选参数,用于指定当元素数量超过 limit 参数指定的数量上限时,添加到最后一个元素之后的字符串。如果元素数量没有超过上限,则 truncated 参数不会被使用。

truncated 参数默认为 null,如果要使用它,必须将其设置为非空的字符串。

下面是一个示例,使用 truncated 参数指定元素数量超过上限时的输出:

val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val result = list.joinToString(separator = ", ",prefix = "[",postfix = "]",limit = 5,truncated = "... and so on"
)
println(result) // 输出:[1, 2, 3, 4, 5... and so on]

在这个示例中,我们使用 limit 参数指定了元素数量上限为5,使用 truncated 参数指定了超出上限时输出的字符串为 "... and so on" 。因为列表中的元素数量为10,超出了上限,所以输出中的最后一个元素后面会添加"... and so on"字符串。

需要注意的是,truncated 参数只有在元素数量超过上限时才会被使用,如果元素数量没有超过上限,则不会被使用。如果没有指定 truncated 参数,则在元素数量超过上限时什么也不会被添加到最后一个元素之后。

结尾

不得不说,ChatGPT 针对知识的回答相当出色,详细且全面。以后学习上的问题估计都可以问它,它就是大佬。

http://www.lryc.cn/news/24974.html

相关文章:

  • 代码随想录算法训练营day46 | 动态规划之背包问题 139.单词拆分
  • DPDK中的无锁共享数据结构
  • 【使用两个栈实现队列】
  • web,h5海康视频接入监控视频流记录一
  • 做毕业设计,前端部分你需要掌握的6个核心技能
  • Read book Netty in action(Chapter VIII)--EventLoop and thread model
  • 番外11:使用ADS对射频功率放大器进行非线性测试3(使用带宽5MHz的WCDMA信号进行ACLR测试)
  • Linux libpqxx 库安装及使用
  • 如何使用COM-Hunter检测持久化COM劫持漏洞
  • Cartesi 举办的2023 黑客马拉松
  • 架构篇--代码质量手册
  • 那些年用过的IDEA插件
  • python+requests实现接口自动化测试
  • rtthread 线程
  • 伯恩光学再成被执行人:多次因劳动纠纷被起诉,曾冲刺港交所上市
  • mysql基础操作2
  • 指针的进阶【下篇】
  • 不同序列模型的输入和输出总结
  • 基于神经网络补偿的主动悬架自适应控制
  • 什么是链表,如何实现?(单链表篇)
  • 探针台简介
  • ABAP 辨析 标准表|排序表|哈希表
  • MIGO 物料过账 创建物料凭证 BAPI_GOODSMVT_CREATE
  • 项目经理处理团队冲突 5大注意事项
  • Linux(Centos)安装TDengine
  • 大数据处理技术导论(6) | Datawhale组队学习46期
  • Java——异常
  • Netty之io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future初解
  • 【正点原子FPGA连载】第二十一章AXI DMA环路测试 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 手把手搭建springboot项目06-springboot整合RabbitMQ及其原理和应用场景