Kotlin原始字符串
外观
Kotlin原始字符串[编辑 | 编辑源代码]
原始字符串(Raw String)是Kotlin中一种特殊的字符串字面量,允许直接包含换行符和特殊字符而无需转义。它通过三重双引号("""
)定义,常用于多行文本、正则表达式或需要保留原始格式的场景。
基本语法[编辑 | 编辑源代码]
原始字符串的语法如下:
val rawString = """这是原始字符串
可以包含换行符
和特殊字符如 \n(不会被转义)"""
输出结果:
这是原始字符串 可以包含换行符 和特殊字符如 \n(不会被转义)
注意:
- 原始字符串中的换行符和缩进会被原样保留。
- 反斜杠(
\
)不再作为转义字符使用。
与普通字符串对比[编辑 | 编辑源代码]
特性 | 原始字符串 | 普通字符串 |
---|---|---|
定义方式 | """...""" |
"..."
|
换行符 | 直接包含 | 需用\n
|
转义字符 | 不生效 | 生效 |
缩进 | 保留 | 忽略 |
实际应用案例[编辑 | 编辑源代码]
案例1:多行文本[编辑 | 编辑源代码]
处理HTML或SQL语句时,原始字符串能显著提升可读性:
val html = """
<html>
<body>
<p>Hello World</p>
</body>
</html>
""".trimIndent()
输出结果:
<html> <body> <p>Hello World</p> </body> </html>
案例2:正则表达式[编辑 | 编辑源代码]
正则表达式常包含大量需转义的字符,原始字符串更简洁:
val regex = """\d{3}-\d{2}-\d{4}""".toRegex() // 匹配SSN格式
println(regex.matches("123-45-6789")) // 输出:true
案例3:JSON/XML模板[编辑 | 编辑源代码]
生成结构化数据时无需拼接字符串:
val jsonTemplate = """
{
"name": "$name",
"age": $age
}
""".trimIndent()
高级特性[编辑 | 编辑源代码]
边界控制[编辑 | 编辑源代码]
通过|
管道符定义边界可对齐多行文本:
val alignedText = """
|Kotlin
|Java
|Python
""".trimMargin()
输出结果:
Kotlin Java Python
动态插入值[编辑 | 编辑源代码]
原始字符串支持字符串模板(${expression}
):
val lang = "Kotlin"
val message = """
Welcome to $lang!
Today is ${java.time.LocalDate.now()}
"""
数学公式支持[编辑 | 编辑源代码]
当需要嵌入数学表达式时:
视觉化表示[编辑 | 编辑源代码]
原始字符串结构示意图:
注意事项[编辑 | 编辑源代码]
1. 原始字符串的缩进以结束引号的位置为基准
2. 如需去除前导空格,使用trimIndent()
或trimMargin()
3. 字符串模板仍会被求值(如$variable
)
总结[编辑 | 编辑源代码]
原始字符串是Kotlin提供的强大特性,特别适合处理需要保持原始格式的文本内容。通过避免转义字符的复杂性,它能显著提升代码的可读性和维护性,是多行文本、模板和正则表达式场景的理想选择。