Kotlin提供了多种灵活的字符串截取方式,既兼容Java风格的substring方法,也有更符合Kotlin简洁风格的便捷方法。下面按使用场景分类讲解:
一、基础截取:substring 方法
这是最通用的截取方式,Kotlin的substring兼容Java的用法,且索引从0开始。
1. 从指定索引截取到末尾
语法:str.substring(startIndex: Int)
fun main() {
val str = "Hello Kotlin"
// 从索引6开始截取(包含6),直到末尾
val result = str.substring(6)
println(result) // 输出:Kotlin
}2. 截取指定索引范围(左闭右开)
语法:str.substring(startIndex: Int, endIndex: Int)
startIndex:起始索引(包含)
endIndex:结束索引(不包含)
fun main() {
val str = "Hello Kotlin"
// 截取索引0到5的字符(包含0,不包含5)
val result = str.substring(0, 5)
println(result) // 输出:Hello
}注意:如果索引超出字符串长度,会抛出StringIndexOutOfBoundsException,建议使用前判断索引合法性:
fun safeSubstring(str: String, start: Int, end: Int): String {
val safeStart = maxOf(0, start)
val safeEnd = minOf(str.length, end)
return if (safeStart < safeEnd) str.substring(safeStart, safeEnd) else ""
}二、便捷截取:take/drop 系列(推荐)
Kotlin提供了更简洁、更安全的截取方法,无需担心索引越界:
示例代码:
fun main() {
val str = "Hello Kotlin"
val takeResult = str.take(5) // 前5个字符
val takeLastResult = str.takeLast(6) // 最后6个字符
val dropResult = str.drop(6) // 丢弃前6个
val dropLastResult = str.dropLast(6) // 丢弃最后6个
println(takeResult) // Hello
println(takeLastResult) // Kotlin
println(dropResult) // Kotlin
println(dropLastResult) // Hello
}三、按分隔符截取:substringBefore/After 系列
适合按特定字符/字符串分割截取,比如处理路径、URL、拼接字符串等场景:
示例代码:
fun main() {
val str = "user:123456:admin"
val beforeFirst = str.substringBefore(":") // 第一个:之前
val afterLast = str.substringAfterLast(":") // 最后一个:之后
println(beforeFirst) // user
println(afterLast) // admin
}总结
基础截取:substring 适合精确控制索引范围,但需手动处理索引越界问题;
便捷截取:take/drop 系列更简洁安全,优先推荐日常使用;
分隔符截取:substringBefore/After 系列专为按分隔符截取设计,场景适配性更强。
所有截取方法返回的都是新字符串(Kotlin字符串不可变),原字符串不会被修改。
版权声明
本文章如果涉及侵权,请联系我。
部分文章系本人原创未经许可,不得转载。



蒙公网安备 15090202000037号
评论列表
发表评论