You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中实现类似C#的数值转特定格式字符串功能?

在Kotlin中将数值转换为特定格式字符串的实现方法

好问题!在Kotlin里确实没有像C#那样直接通过数字的ToString方法传入自定义格式字符串来实现这个需求的方式,不过我们可以通过字符串处理来达到和你示例中完全一样的效果,这里有两种简单的实现方法:

方法一:字符串截取拼接

这种方法直观易懂,先将长数字转换为字符串并确保长度为12位(不足时补前导零),然后按固定位置截取子串,最后用分隔符拼接起来:

val test: Long = 110119225603
// 转换为字符串并补前导零,确保总长度为12位
val numStr = test.toString().padStart(12, '0')
// 按位置截取并拼接成目标格式
val dateFormat = "${numStr.substring(0,2)}:${numStr.substring(2,4)}:${numStr.substring(4,6)} ${numStr.substring(6,8)}:${numStr.substring(8,10)}:${numStr.substring(10,12)}"
println(dateFormat) // 输出:11:01:19 22:56:03

方法二:正则表达式替换

如果你更喜欢简洁的写法,可以用正则表达式匹配字符串的分组,然后替换成带分隔符的格式:

val test: Long = 110119225603
val numStr = test.toString().padStart(12, '0')
// 用正则分组匹配并替换
val dateFormat = numStr.replace(Regex("^(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})$"), "$1:$2:$3 $4:$5:$6")
println(dateFormat) // 输出:11:01:19 22:56:03

补充说明

  • padStart(12, '0') 的作用是确保数字转换为字符串后长度为12位,如果原数字位数不足(比如只有11位),会在前面补零,避免截取时出现索引越界的问题。
  • 这两种方法本质都是把数字当作字符序列来处理,因为你的需求是按固定位置拆分数字,而非对数字本身进行数值格式化(比如千分位、小数精度等)。

内容的提问来源于stack exchange,提问作者Sektor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:01:06