1. 简介

在 Kotlin 中,String 是最基本的数据类型之一,处理字符串是非常常见的操作。本文将介绍几种在 Kotlin 中通过索引获取字符串中特定字符的方法,帮助你写出更清晰、更具 Kotlin 风格的代码。

2. 使用索引操作符 []

String 本质上是一个字符序列。Kotlin 提供了非常直观的方式,通过方括号 [] 来按索引访问字符。索引从 0 开始,这一点与 Java 一致。

✅ 示例:

val string = "Baeldung"
assertEquals('l', string[3])

⚠️ 注意:如果索引超出字符串长度范围,会抛出 StringIndexOutOfBoundsException,使用时需注意边界判断。

3. 使用 get() 方法

String 类中还提供了一个 get() 方法,作用与索引操作符相同,通过指定索引返回对应的字符

✅ 示例:

val string = "Baeldung"
assertEquals('l', string.get(3))

⚠️ 同样地,如果索引超出范围,会抛出 StringIndexOutOfBoundsException,使用时要确保索引有效。

4. 使用 first(), last(), single() 方法

Kotlin 标准库为字符串提供了几个便捷函数,用于快速获取特定位置的字符:

  • first():获取第一个字符
  • last():获取最后一个字符
  • single():如果字符串只有一个字符,则返回该字符,否则抛出异常

✅ 示例:

val string = "Baeldung"
assertEquals('B', string.first()) // 获取第一个字符
assertEquals('g', string.last())  // 获取最后一个字符

val singleChar = "A"
assertEquals('A', singleChar.single()) // 只有单个字符时才返回

⚠️ single() 踩坑提醒:如果字符串长度不为 1,调用会抛出异常,使用时需确保输入合法。

5. 使用 CharArray

另一种方式是先将字符串转换为 CharArray,然后通过数组索引访问字符。

✅ 示例:

val string = "Baeldung"
val toCharArray = string.toCharArray()
assertEquals('l', toCharArray[3])

这种方式适用于需要频繁操作字符数组的场景,比如字符排序、替换等。

6. 使用 subSequence()

我们还可以通过截取子序列的方式获取单个字符。使用 subSequence(start, end) 获取子串,再结合 single() 提取字符。

✅ 示例:

val string = "Baeldung"
val substring = string.subSequence(3, 4).single()
assertEquals('l', substring)

⚠️ 注意:子串的结束索引是不包含的,所以 subSequence(3, 4) 实际上只包含一个字符。

7. 总结

本文介绍了几种在 Kotlin 中通过索引获取字符的常用方法,包括:

方法 说明
string[index] 最常用、最直观
string.get(index) 功能与 [] 相同
string.first() / last() / single() 快速获取特定位置字符
toCharArray()[index] 适合需要操作字符数组的场景
subSequence().single() 更适合处理子串提取的场景

这些方法各有适用场景,选择时可根据具体需求和代码风格决定。所有示例代码都可以在 GitHub 上找到:点击查看完整示例


原始标题:Get Character by Index in a Kotlin String