1、规则
用 String 类型表示字符串,字符串值是双引号("
)中的字符序列
val str = "abcd 123"
可以使用索引运算符: s[i],
访问字符串的元素 -- 字符,可以使用 for
循环遍历这些字符
val str = "abcd"
for (c in str) {
print(c)
} // abcd
字符串是不可变的,一旦初始化就不能改变它的值或者给它赋新值; 所有转换字符串的操作都以一个新的 String
对象来返回结果,而保持原始字符串不变
val str = "abcd"
println(str.uppercase()) // 创建并输出一个新的 String 对象
println(str) // 原始字符串保持不变
可以用 +
操作符连接字符串,或连接字符串与其他类型的值 (优先使用字符串模板或多行字符串而不是字符串连接:即不轻易使用连接的方式构造字符串)
val s = "abc" + 1
println(s + "def") // abc1def
2、转义字符串
转义字符串可以包含转义字符,转义采用传统的反斜杠(\
)方式
val s = "Hello, world!\n"
3、多行字符串
多行字符串可以包含换行以及任意文本 ,使用三个引号("""
)分界符括起来,内部没有转义但可包含换行以及任何其他字符
val text = """
for (c in "foo")
print(c)
"""
使用 trimMargin() 删掉多行字符串中的前导空格
//默认以竖线 | 作为边界前缀, 也可以选择其他字符并作为参数传入,比如 trimMargin(">")
val text = """
|Tell me and I forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
""".trimMargin()
println(text)
/*
Tell me and I forget.
Teach me and I remember.
Involve me and I learn.
(Benjamin Franklin)
*/
4、字符串模板
字符串字面值可以包含模板表达式——一些小段代码,会求值并把结果合并到字符串中
模板表达式以美元符($
)开头,或由一个的名称构成, 或用花括号括起来
val i = 10
println("i = $i") // 输出 “i = 10”
val s = "abc"
println("$s.length is ${s.length}") // 输出 "abc.length is 3"
val price = """
${'$'}_9.99
"""
println("$price") // 输出 “$_9.99”