字符串
字符串用String
类型表示,并且是不可变的。字符串的元素(字符)可以使用字符串索引运算符访问:s[i]
。并且可以使用for循环遍历字符串,如:
for(c in str){
printlin(c)
}
字符串字面值
Kotlin有两种类型的字符串字面值:
- 转义字符串
可以有转义字符:var s = "Hello, World!\n"
,类似Java中的字符串 - 原生字符串,用三个引号(
"""
)分界符括起来,内部没有转义并且可以包含换行和任意其他字符
输出时会照原样输出,如下面的原始字符串会被照原格式输出到控制台
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(">")
啥意思呢,就上面的原生字符串,调用
trimMargin()
函数可以去除|
之前的空格,之后的就不管了
字符串模板
字符串可以包含模板表达式,即一些小段代码,会求值并把结果合并到字符串中。
语法:以$
开头,由一个简单的名字(已经声明过的变量)构成:
var i = 10
val s = "i = $i" //求值结果为"i= 10",相当于$1是占位符,替i所代表的值占位
或者用花括号括起来的引用表达式:
val s = "abc"
val str = "$s.length is ${s.length}" //求值结果为"abc.length is 3",这里字符串模板位花括号内的表达式结果占位
原生字符串同样支持模板,如果你需要在原生字符串中表示字面值$
字符(原生字符串中不支持转义),那么你可以:
val price = """
${'$'}9.99
"""
//或者
val t = '$'
val price = """${t}9.99"""