字符串

字符串

字符串用String类型表示,并且是不可变的。字符串的元素(字符)可以使用字符串索引运算符访问:s[i]。并且可以使用for循环遍历字符串,如:

for(c in str){
   printlin(c)
}

字符串字面值
Kotlin有两种类型的字符串字面值:

  1. 转义字符串
    可以有转义字符:var s = "Hello, World!\n",类似Java中的字符串
  2. 原生字符串,用三个引号(""")分界符括起来,内部没有转义并且可以包含换行和任意其他字符
    输出时会照原样输出,如下面的原始字符串会被照原格式输出到控制台
    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"""

推荐阅读更多精彩内容