Kotlin字符串

Android  Kotlin  2024年9月12日 pm7:33发布2个月前更新 城堡大人
75 0 0

前言

简单记录一下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从基础到实战》

 历史上的今天

  1. 2023: OkHttp分析之异步请求(0条评论)
  2. 2022: android sqlite模糊查询数据库数据(0条评论)
  3. 2019: 乔叶:曾经这样爱过你(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

再谈Android日夜模式

前言之前介绍过Android日夜模式的使用,日夜模式是Android高版本自带的一种模式,很方便也很使用。如果换肤只有2种皮肤,这个是最佳选择,因为Android日夜模式只要按照规则即可实现。虽然介绍过,但很多细节还是没有说明白,因此由写一篇流水文,方便自己回顾。正文日夜模式就是我们常说的...

OkHttp分析之同步请求

前言接上文网络请求框架OkHttp的同步异步简单使用介绍《OkHttp简单介绍之一》,今天就对同步请求的源码分析一下,加深一下印象。记录一下,方便自己查阅。正文这里用的框架版本implementation 'com.squareup.okhttp3:okhttp:3.12.0'有新版本,...

Kotlin字符串

前言简单记录一下Kotlin字符串。主要是方便自己查阅。正文字符串一个字符串可以包含一个或者多个字符,也可以不包含任何字符,即长度为0。var mString: String = "谷歌一下"var mString2 = "百度一下"遍历字符串遍历也是很多种,下面列举验证过的遍历...

[摘]查找当前目录下所有文件某一行的内容

前言在做monkey时,会间隔把当前所有应用的内存占用打印出来,因此为了方便查看内存是否有持续增长,会使用命令查看所有dump的文件内容。好记性不如烂笔头正文以下在Window系统中的git bash环境中测试(或者算是Linux环境)find . -type f -name “*.tx...

[摘]Handler内存泄露原理及解决方法

SHUI知道本想总结,也懒了,看网上也有很多人总结,也就摘抄于此,以供自己查阅。前言因为Android采取了单线程UI模型,开发者无法在子线程中更新UI,为此Android为我们提供了Handler这个工具,可以开发者切换到主线程更新UI。示例首先看一段示例代码public class...

Android内置应用更新或升级后被还原

推荐使用 极客导航 :125啦极客导航(http://www.biumall.com/jike.html)最近被第三方软坑了一下,断电后软件又回去了,一直说是我这边的问题。好了,最后看到网上大牛也分析过,因此摘抄于此,记录一下。如果更新或者升级后系统内置应用,遇到重启Android系统后内置应...