前言
正文
字符串
一个字符串可以包含一个或者多个字符,也可以不包含任何字符,即长度为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程序中,字符串的常见操作除了遍历以外,还有字符串查找、字符串截取、字符串替换、字符串分隔、字符串去空格、字符串字面值、字符串模板等。
字符串查找
为了方便字符串的查找,提供了多个函数。
-
first() : 查找第1个元素
-
last() : 查找最后一个元素
-
get(index) : 查找指定索引为index的元素
mString.first() mString.get(0) mString[0] mString.last()
字符串截取
字符串截取主要使用的是subString()函数和subSequence()函数,这两个函数都有重载函数(函数名相同,参数不同)
略过,具体看具体看源码定义
字符串替换
提供如下函数进行字符串替换。
-
replace()
-
replaceFirst()
-
replaceAfter()
-
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中有两种类型的字符串字面值,一种是转义字符串,可以包含转义字符,另一种是原生字符串,可以包含转义字符、换行和任意文本。
-
转义字符串
转义是采用传统的反斜杠“\”方式将字符进行转义。字符串在输出时,如果想要输出一些特殊字符,则需要用到转义字符 串,比如\t,\b,\n,\r,',",\和$。
var mString = "Hello\nWorld"
输出内容是
Hello World
如果要完整打印上面的字符串,再加一个反斜杠\即可。
var mString = "Hello\\nWorld"
-
原生字符串
原生字符串是使用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')}")
参考文章
-
《Kotlin从基础到实战》
-
等