字符串
Kotlin 中字符串用 String 类型表示。 通常,字符串值是双引号(")中的字符序列:
val str = "abcd 123"
字符串的元素——字符可以使用索引运算符访问: s[i]。 可以使用 for 循环遍历这些字符:
fun main() {val str = "abcd"//sampleStartfor (c in str) {println(c)}//sampleEnd}
字符串是不可变的。 一旦初始化了一个字符串,就不能改变它的值或者给它赋新值。 所有转换字符串的操作都以一个新的 String 对象来返回结果,而保持原始字符串不变:
fun main() {//sampleStartval str = "abcd"println(str.uppercase()) // 创建并输出一个新的 String 对象println(str) // 原始字符串保持不变//sampleEnd}
如需连接字符串,可以用 + 操作符。这也适用于连接字符串与其他类型的值, 只要表达式中的第一个元素是字符串:
fun main() {//sampleStartval s = "abc" + 1println(s + "def")//sampleEnd}
在大多数情况下,优先使用字符串模板或多行字符串而不是字符串连接。
字符串字面值
Kotlin 有两种类型的字符串字面值:
转义字符串
转义字符串可以包含转义字符。
以下是转义字符串的一个示例:
val s = "Hello, world!\n"
转义采用传统的反斜杠(\)方式。
所支持的转义序列请参见 字符 页。
多行字符串
多行字符串可以包含换行以及任意文本。 它使用三个引号(""")分界符括起来,内部没有转义并且可以包含换行以及任何其他字符:
val text = """for (c in "foo")print(c)"""
如需删掉多行字符串中的前导空格,请使用 trimMargin() 函数:
val text = """|Tell me and I forget.|Teach me and I remember.|Involve me and I learn.|(Benjamin Franklin)""".trimMargin()
默认以竖线 | 作为边界前缀,但你可以选择其他字符并作为参数传入,比如 trimMargin(">")。
字符串模板
字符串字面值可以包含模板表达式——一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头,要么由一个的名称构成:
fun main() {//sampleStartval i = 10println("i = $i") // 输出“i = 10”//sampleEnd}
要么是用花括号括起来的表达式:
fun main() {//sampleStartval s = "abc"println("$s.length is ${s.length}") // 输出 "abc.length is 3"//sampleEnd}
在多行字符串及转义字符串中都可以使用模板。 如需在多行字符串(不支持反斜杠转义)中的允许作为标识符(identifier)开头的任意符号之前插入美元符 $, 请使用以下语法:s
val price = """${'$'}_9.99"""

