Kotlin 字符串 #
一、字符串基础 #
1.1 字符串声明 #
kotlin
val str1: String = "Hello"
val str2 = "Kotlin"
// 空字符串
val empty = ""
val blank = " "
// 使用 String 构造函数
val chars = charArrayOf('H', 'i')
val str3 = String(chars) // "Hi"
1.2 字符串不可变 #
Kotlin 字符串是不可变的:
kotlin
val str = "Hello"
// str[0] = 'h' // 错误:不能修改
// 创建新字符串
val newStr = "h" + str.substring(1)
1.3 访问字符 #
kotlin
val str = "Kotlin"
// 通过索引访问
val char = str[0] // 'K'
val last = str[str.length - 1] // 'n'
// 使用 get 方法
val char2 = str.get(1) // 'o'
// 安全访问
val safe = str.getOrNull(10) // null
二、字符串模板 #
2.1 变量模板 #
使用 $ 插入变量:
kotlin
val name = "Kotlin"
val age = 10
println("Name: $name") // Name: Kotlin
println("Age: $age") // Age: 10
2.2 表达式模板 #
使用 ${} 插入表达式:
kotlin
val a = 10
val b = 20
println("Sum: ${a + b}") // Sum: 30
println("Average: ${(a + b) / 2}") // Average: 15
val name = "Kotlin"
println("Length: ${name.length}") // Length: 6
println("Upper: ${name.uppercase()}") // Upper: KOTLIN
2.3 原始字符串中的模板 #
kotlin
val name = "Kotlin"
val text = """
Hello, $name!
Welcome to Kotlin.
""".trimIndent()
println(text)
2.4 转义美元符号 #
kotlin
val price = "Price: \$100"
println(price) // Price: $100
// 或使用表达式
val price2 = "Price: ${'$'}100"
三、多行字符串 #
3.1 原始字符串 #
使用三引号 """ 创建多行字符串:
kotlin
val text = """
Line 1
Line 2
Line 3
"""
println(text)
3.2 trimIndent #
去除公共前导空格:
kotlin
val text = """
|Line 1
|Line 2
|Line 3
""".trimIndent()
println(text)
3.3 trimMargin #
使用边界符去除缩进:
kotlin
val text = """
|Line 1
|Line 2
|Line 3
""".trimMargin()
// 自定义边界符
val text2 = """
>Line 1
>Line 2
>Line 3
""".trimMargin(">")
3.4 保留格式 #
kotlin
val json = """
{
"name": "Kotlin",
"version": 1.9
}
""".trimIndent()
println(json)
四、字符串操作 #
4.1 拼接 #
kotlin
val str1 = "Hello"
val str2 = "World"
// 使用 +
val result = str1 + " " + str2 // "Hello World"
// 使用 joinToString
val list = listOf("A", "B", "C")
val joined = list.joinToString(", ") // "A, B, C"
// 使用 StringBuilder
val sb = StringBuilder()
sb.append("Hello")
sb.append(" ")
sb.append("World")
val built = sb.toString()
4.2 分割 #
kotlin
val str = "A,B,C,D"
// 基本分割
val parts = str.split(",") // ["A", "B", "C", "D"]
// 限制分割数量
val limited = str.split(",", limit = 2) // ["A", "B,C,D"]
// 正则分割
val regex = str.split(Regex("[,;]"))
// 分割为行
val lines = "Line1\nLine2\nLine3".lines()
4.3 子字符串 #
kotlin
val str = "Hello, Kotlin!"
// 使用范围
val sub1 = str.substring(0, 5) // "Hello"
val sub2 = str.substring(7) // "Kotlin!"
// 使用 until
val sub3 = str.substring(0 until 5) // "Hello"
// 使用 take/drop
val first5 = str.take(5) // "Hello"
val last7 = str.takeLast(7) // "Kotlin!"
val drop5 = str.drop(7) // "Kotlin!"
val dropLast = str.dropLast(1) // "Hello, Kotlin"
// 使用 substringBefore/After
val before = str.substringBefore(",") // "Hello"
val after = str.substringAfter(",") // " Kotlin!"
val beforeLast = str.substringBeforeLast("o") // "Hello, K"
val afterLast = str.substringAfterLast("o") // "tlin!"
4.4 替换 #
kotlin
val str = "Hello, World!"
// 简单替换
val replaced = str.replace("World", "Kotlin")
// 替换第一个
val first = str.replaceFirst("o", "0")
// 正则替换
val regex = str.replace(Regex("[aeiou]"), "*")
// 删除字符
val removed = str.removeSuffix("!")
val removed2 = str.removePrefix("Hello, ")
4.5 大小写转换 #
kotlin
val str = "Hello Kotlin"
str.uppercase() // "HELLO KOTLIN"
str.lowercase() // "hello kotlin"
str.capitalize() // "Hello kotlin"(已废弃)
str.decapitalize() // "hello Kotlin"(已废弃)
str.titlecase() // "Hello Kotlin"
4.6 去除空白 #
kotlin
val str = " Hello "
str.trim() // "Hello"
str.trimStart() // "Hello "
str.trimEnd() // " Hello"
// 去除指定字符
val str2 = "***Hello***"
str2.trim('*') // "Hello"
// 去除满足条件的字符
val str3 = "123Hello456"
str3.trim { it.isDigit() } // "Hello"
五、字符串查找 #
5.1 包含检查 #
kotlin
val str = "Hello, Kotlin"
str.contains("Kotlin") // true
str.contains("kotlin", ignoreCase = true) // true
"Kotlin" in str // true
5.2 前缀后缀 #
kotlin
val str = "Hello.kt"
str.startsWith("Hello") // true
str.endsWith(".kt") // true
str.startsWith("hello", ignoreCase = true) // true
5.3 查找索引 #
kotlin
val str = "Hello, Kotlin"
str.indexOf("o") // 4
str.lastIndexOf("o") // 8
str.indexOf("z") // -1
// 从指定位置开始查找
str.indexOf("o", 5) // 8
// 正则查找
str.indexOf(Regex("[0-9]"))
六、字符串判断 #
6.1 空白判断 #
kotlin
val str = " "
str.isEmpty() // false(非空字符串)
str.isBlank() // true(全是空白)
str.isNotEmpty() // true
str.isNotBlank() // false
6.2 内容判断 #
kotlin
val str = "12345"
str.matches(Regex("[0-9]+")) // true
str.all { it.isDigit() } // true
str.any { it.isLetter() } // false
6.3 相等判断 #
kotlin
val a = "Kotlin"
val b = "Kotlin"
val c = "kotlin"
a == b // true(内容相等)
a == c // false
a.equals(c, ignoreCase = true) // true
// 引用相等
a === b // 可能 true(字符串常量池)
七、字符串与数值转换 #
7.1 字符串转数值 #
kotlin
"123".toInt() // 123
"123".toLong() // 123L
"3.14".toFloat() // 3.14f
"3.14".toDouble() // 3.14
// 安全转换
"abc".toIntOrNull() // null
"123".toIntOrNull() // 123
// 进制转换
"FF".toInt(16) // 255
"1010".toInt(2) // 10
7.2 数值转字符串 #
kotlin
val num = 123
num.toString() // "123"
num.toString(2) // "1111011"(二进制)
num.toString(16) // "7b"(十六进制)
// 格式化
String.format("%04d", 5) // "0005"
String.format("%.2f", 3.14159) // "3.14"
八、字符串格式化 #
8.1 format 函数 #
kotlin
val name = "Kotlin"
val age = 10
val formatted = "Name: %s, Age: %d".format(name, age)
// "Name: Kotlin, Age: 10"
// 使用 String.format
val formatted2 = String.format("Name: %s, Age: %d", name, age)
8.2 格式说明符 #
| 格式符 | 说明 | 示例 |
|---|---|---|
%s |
字符串 | “Kotlin” |
%d |
整数 | 123 |
%f |
浮点数 | 3.14 |
%.2f |
保留2位小数 | 3.14 |
%x |
十六进制 | 7b |
%o |
八进制 | 173 |
%b |
布尔值 | true |
%c |
字符 | K |
%% |
百分号 | % |
kotlin
val price = 99.99
val count = 5
println("Price: %.2f".format(price)) // Price: 99.99
println("Count: %03d".format(count)) // Count: 005
println("Hex: %x".format(255)) // Hex: ff
九、正则表达式 #
9.1 创建正则表达式 #
kotlin
// 使用 Regex 构造函数
val regex1 = Regex("[0-9]+")
// 使用 toRegex 扩展函数
val regex2 = "[0-9]+".toRegex()
// 使用原始字符串
val regex3 = Regex("""\d+""")
9.2 匹配操作 #
kotlin
val regex = Regex("[0-9]+")
val str = "123"
regex.matches(str) // true(完全匹配)
regex.containsMatchIn("abc123") // true(部分匹配)
// 查找匹配
val result = regex.find("abc123def")
result?.value // "123"
// 查找所有匹配
val all = regex.findAll("a1b2c3")
all.map { it.value }.toList() // ["1", "2", "3"]
9.3 替换操作 #
kotlin
val regex = Regex("[0-9]+")
val str = "a1b2c3"
regex.replace(str, "X") // "aXbXcX"
// 使用函数替换
regex.replace(str) {
"[${it.value}]"
} // "a[1]b[2]c[3]"
9.4 分割操作 #
kotlin
val regex = Regex("[,;]")
val str = "a,b;c"
regex.split(str) // ["a", "b", "c"]
十、常用字符串函数 #
10.1 统计函数 #
kotlin
val str = "Hello Kotlin"
str.length // 12
str.count() // 12
str.count { it == 'l' } // 3
10.2 反转 #
kotlin
val str = "Kotlin"
str.reversed() // "niltoK"
10.3 重复 #
kotlin
val str = "Hi"
str.repeat(3) // "HiHiHi"
10.4 填充 #
kotlin
val str = "5"
str.padStart(3, '0') // "005"
str.padEnd(3, '0') // "500"
str.center(5, '*') // "**5**"(需要扩展函数)
十一、总结 #
字符串操作要点:
- 字符串模板:
$变量和${表达式} - 多行字符串:使用
"""和trimIndent() - 常用操作:分割、替换、查找、截取
- 正则表达式:使用
Regex类
下一步,让我们学习 条件表达式!
最后更新:2026-03-27