《Kotlin核心编程》 ——2.5 字符串的定义和操作
2.5 字符串的定义和操作
我们似乎破坏了一个传统。根据惯例,每本编程语言的技术书开头,似乎都会以打印一段“hello world!”的方式来宣告自己的到来。现在,我们决定秉承传统,来完成这一任务。当然,此举实际上不是为了宣扬某种仪式,而是因为本节的内容是关于Kotlin中又一项基础的语法知识,也就是字符串操作。
Kotlin中的字符串并没有什么与众不同,与Java一样,我们通过双引号来定义一个字符串,它是不可变的对象。
val str = "hello world!"
然后,我们可以对其进行各种熟悉的操作:
str.length // 12
str.substring(0,5) // hello
str + " hello Kotlin!" // hello world! hello Kotlin!
str.replace("world", "Kotlin") // hello Kotlin!
由于String是一个字符序列,所以我们可以对其进行遍历:
>>> for (i in str.toUpperCase()) { print(i) }
HELLO WORLD!
还可以访问这个字符序列的成员:
str[0] // h
str.first() // h
str.last() // !
str[str.length - 1] // !
此外,Kotlin的字符串还有各种丰富的API,如:
// 判断是否为空字符串
"".isEmpty() // true
" ".isEmpty() // false
" ".isBlank() // true
"abcdefg".filter { c -> c in 'a'..'d' } // abcd
更多字符串类方法可以查阅Kotlin API文档:https://kotlinlang.org/api/latest/jvm/stdlib/ kotlin/-string/index.html
2.5.1 定义原生字符串
Java在JEP 326改进计划中提议,增加原生字符串的语法支持,因为目前它只能通过转义字符的迂回办法来支持,非常麻烦。而在Kotlin中,已经支持了这种语法,我们来定义一个多行的原生字符串体验一下:
val rawString = """
\n Kotlin is awesome.
\n Kotlin is a better Java."""
>>> println(rawString)
\n Kotlin is awesome.
\n Kotlin is a better Java.
简而言之,用这种3个引号定义的字符串,最终的打印格式与在代码中所呈现的格式一致,而不会解释转化转义字符(正如上述例子中的\n),以及Unicode的转义字符(如\uXXXX)。
比如,我们用字符串来描述一段HTML代码,用普通字符串定义时必须是这样子:
val html = "<html>\n" +
" <body>\n" +
" <p>Hello World.</p>\n" +
" </body>\n" +
"</html>\n"
采用原生字符串的格式,会非常方便。如下:
val html = """<html>
<body>
<p>Hello World.</p>
</body>
</html>
"""
- 点赞
- 收藏
- 关注作者
评论(0)