Kotlin中实现字符串无前缀时自动追加指定前缀的原生方案
方案1:使用removePrefix组合实现(标准库原生支持,最简洁)
Kotlin标准库没有提供命名为ensurePrefix之类的专属API,但可以通过现有字符串扩展函数组合实现无if判断的简洁写法,完全满足需求:
val text = "123456" val prefix = "#" val textFormatted = prefix + text.removePrefix(prefix)
逻辑说明:先移除字符串中已存在的指定前缀(如果有的话),再统一拼接一次前缀,最终效果就是字符串必然仅携带一次目标前缀,不会出现重复前缀的问题
方案2:自定义扩展函数(复用性更强、可读性更高)
如果需要频繁使用该逻辑,可以先自定义一次通用扩展函数,后续调用更直观:
// 定义通用扩展函数 fun String.ensurePrefix(prefix: String) = prefix + this.removePrefix(prefix) // 调用示例 val textFormatted = "123456".ensurePrefix("#")
其他可选写法
也可以结合takeIf实现,可读性略低于上述方案:
val textFormatted = text.takeIf { it.startsWith(prefix) } ?: "$prefix$text"
内容的提问来源于stack exchange,提问作者Egor
相关产品推荐
相关产品推荐

