《Kotlin核心编程》 ——2.5 字符串的定义和操作

举报
华章计算机 发表于 2020/02/21 22:02:18 2020/02/21
【摘要】 本节书摘来自华章计算机《Kotlin核心编程》 —— 书中第2章,第2.5.1节,作者是水滴技术团队 。

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>

           """


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。