Kotlin是否存在类似take的原生方法,超长时自动添加省略号?
Kotlin 中是否有原生的带省略号的字符串截取方法?
Kotlin 标准库里没有直接提供这种自动在末尾添加省略号的字符串截取原生方法,你需要自己实现扩展函数,或者借助特定 UI 框架的相关方法(比如 Android 的TextUtils.ellipsize,但这属于框架 API,并非 Kotlin 标准库内容)。
你写的takeDot扩展函数逻辑是合理的,但可以做几点优化:
- 参数名拼写修正:
limite改成limit是标准英语拼写 - 边界场景优化:当
limit≤3时,当前逻辑直接返回原字符串,若需求是长度超限时也要显示省略号,可以调整逻辑(比如limit=3时截取3个字符加省略号) - 增加参数合法性校验:避免传入负数的
limit引发异常
优化后的示例代码:
fun String.takeWithEllipsis(limit: Int): String { require(limit >= 0) { "截取长度不能为负数" } return when { limit == 0 -> "" length <= limit -> this limit <= 3 -> "${take(limit)}..." else -> "${take(limit - 3)}..." } } fun main() { println("test".takeWithEllipsis(5)) // 输出: test println("testaedad".takeWithEllipsis(5)) // 输出: tes... println("abcdef".takeWithEllipsis(3)) // 输出: abc... }
内容的提问来源于stack exchange,提问作者Anthone
相关产品推荐
相关产品推荐

