前言

简单记录一下Kotlin字符串。主要是方便自己查阅。

正文

字符串

一个字符串可以包含一个或者多个字符,也可以不包含任何字符,即长度为0。

var mString: String = "谷歌一下"
var mString2 = "百度一下"
遍历

字符串遍历也是很多种,下面列举验证过的遍历方式。

方式1
var mString: String = "阅读是一种生活方式"
for (index in mString.indices) {
    Log.d(TAG, "mString[ " + mString[index] + " ]")
}
方式2
mString.forEach {
    Log.d(TAG, "mString : $it")
}
方式3
 for (char in mString) {
     Log.d(TAG, "mString : $char ")
 }
方式3
for (i in 0..<mString.length) {
    Log.d(TAG, "mString : " + mString[i])
}

for (i: Int in 0..<mString.length) {
    Log.d(TAG, "mString : " + mString[i])
}
方式4
var i = 0
while (i < mString.length) {
    Log.d(TAG, "mString : " + mString[i])
    i++
}
方式5
 for ((index, value) in mString.withIndex()) {
     Log.d(TAG, "mString $index : $value")
 }
字符串的常见操作

在Kotlin程序中,字符串的常见操作除了遍历以外,还有字符串查找、字符串截取、字符串替换、字符串分隔、字符串去空格、字符串字面值、字符串模板等。

字符串查找

为了方便字符串的查找,提供了多个函数。

  1. first() : 查找第1个元素

  2. last() : 查找最后一个元素

  3. get(index) : 查找指定索引为index的元素

mString.first()
mString.get(0)
mString[0]

mString.last()
字符串截取

字符串截取主要使用的是subString()函数和subSequence()函数,这两个函数都有重载函数(函数名相同,参数不同)

略过,具体看具体看源码定义

字符串替换

提供如下函数进行字符串替换。

  1. replace()

  2. replaceFirst()

  3. replaceAfter()

  4. replaceBefore()

等,具体看源码定义。

字符串分隔

调用split()函数进行的分割。

var mString: String = "阅读.是.一种.生活方式"
var array = mString.split('.')

分割后

[阅读, 是, 一种, 生活方式]
字符串去空格

提供了trim()、trimEnd()等多个函数,其中trim()用于删除字符串前面的空格,trimEnd()用于删除字符串后面的字符。

var mString: String = " 1阅读 2是 3一种 4生活 5方式6 "
Log.d(TAG, "test0: ${mString}")
//去除最后一个空格
Log.d(TAG, "test1: ${mString.trimEnd()}")
//去除第一个空格
Log.d(TAG, "test2: ${mString.trim()}")
Log.d(TAG, "test3: ${mString.trimStart()}")
//去除所有空格
Log.d(TAG, "test4: ${mString.replace(Regex("\\s+"), "")} ")
Log.d(TAG, "test5: ${mString.replace("\\s+".toRegex(), "")} ")

输出结果

test0:  1阅读 2是 3一种 4生活 5方式6 
test1:  1阅读 2是 3一种 4生活 5方式6
test2: 1阅读 2是 3一种 4生活 5方式6
test3: 1阅读 2是 3一种 4生活 5方式6 
test4: 1阅读2是3一种4生活5方式6
test4: 1阅读2是3一种4生活5方式6

由于最后一个空格不是很明显,下面就打印长度

Log.d(TAG, "test0: ${mString.length}")
Log.d(TAG, "test1: ${mString.trimEnd().length}")

输出

test0: 21
test1: 20
字符串字面值

Kotlin中有两种类型的字符串字面值,一种是转义字符串,可以包含转义字符,另一种是原生字符串,可以包含转义字符、换行和任意文本。

  1. 转义字符串

转义是采用传统的反斜杠“\”方式将字符进行转义。字符串在输出时,如果想要输出一些特殊字符,则需要用到转义字符串,比如\t,\b,\n,\r,\$

var mString = "Hello\nWorld"

输出内容是

Hello
World

如果要完整打印上面的字符串,再加一个反斜杠\即可。

var mString = "Hello\\nWorld"
  1. 原生字符串

原生字符串是使用3对引号(””””””)把所有字符括起来,原生字符串可以有效地保证字符串中原有内容的输出,即使原生字符串中包含转义字符也不会被转义。

var mString = """Hello\nWorld"""
模板表达式

字符串可以包含模板表达式。

所谓的模板表达式就是在字符串中添加占位符,字符串模板表达式由${变量名/函数/表达式}组成,也可以省略{},例如“$变量名”。

//方式1
Log.d(TAG, "test: $mString")
//方式2
Log.d(TAG, "test: ${mString}")

一般来时可以去掉{},但有时候需要加上,比如下面类似当前情况就不能去掉啦!

Log.d(TAG, "test: ${mString.length}")
Log.d(TAG, "test: ${mString.replace('e', 'a')}")

参考文章

  1. 《Kotlin从基础到实战》

相关文章

暂无评论

none
暂无评论...