Kotlin字符串

Android  Kotlin  2024年9月12日 pm7:33发布6天前更新 91es.com站长
26 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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com[备用域名]
3、 本站内容: 部分来源于网络,仅供站长学习和参考,若侵权请留言

暂无评论

暂无评论...

随机推荐

梁小斌:中国,我的钥匙丢了

中国,我的钥匙丢了。 那是十多年前,我沿着红色大街疯狂地奔跑,我跑到了郊外的荒野上欢叫,后来,我的钥匙丢了。 心灵,苦难的心灵,不愿再流浪了,我想回家打开抽屉、翻一翻我儿童时代的画片,还看一看那夹在书页里的翠绿的三叶草。 而且,我还想打开...

Kotlin字符串

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

自定义SeekBar样式

前言简单记录一下使用shape定制Seekbar样式。正文这里主要在参考文章末尾连接修改的。谢谢。自定义thumb/res/drawable/seek_bar_thumb.xml<?xml version="1.0" encoding="utf-8"?><shape...

个人linux常用命令

linux常用命令常用好记性不如烂笔头,还是整理整理。下面是记录一下有常用,但容易忘记的一些命令。查看磁盘剩余空间# 查看所有磁盘信息df -h显示的结果信息$ df -hFilesystem Size Used Avail Use% Mounted on...

[摘]Android性能优化篇之内存优化--内存泄漏

SHUI知道这篇文章对Android性能优化篇之内存优化--内存泄漏总结得很到位,基本上涵盖了。感谢感谢。什么是内存泄漏当一个对象已经不需要在使用了,本应该被回收,而另一个正在使用的对象持有它的引用,导致对象不能被回收。因为不能被及时回收的本该被回收的内存,就产生了内存泄漏。如果内存泄漏太多...

静态换肤库BiuSkin1DN的使用

前言前不久又上线了一个静态换肤库BiuSkin1DN,主要是针对日夜模式的换肤库:BiuSkin1DN。今天有空就简单介绍一下BiuSkin1DN库的使用。记录于此,方便自己查阅。正文日夜模式日夜模式就是我们常说的静态换肤的一种。进入话题前,先介绍一下优缺点。知此知彼,百战不殆优...