一、字符串查找
字符串查找功能在实际开发中,只会用到几个简单的函数,这里我只说明几个常用的。
1.1、获取第一个元素
主要包含first() | firstOrNull()和first{} | firstOrNull{}四个函数
first() | firstOrNull()
作用 :查找字符串的第一个元素
区别 :若字符串为空串时,前者会抛出NoSuchElementExceptio n异常 ,后者会返回null
例:
val str = "kotlin very good"// 如果字符串为空串时,会抛出NoSuchElementException异常str.first() <=> str[0] <=> str.get(0)// 如果字符串为空串时,会返回nullstr.firstOrNull()
first{
} | firstOrNull{
}
作用 :查找等于某一个字符的第一个元素
区别 :未查找到满足条件的元素,前者会抛出NoSuchElementException异常 ,后者会返回null
例:
val str = "kotlin very good"// 如果未查找到满足条件的元素,会抛出NoSuchElementException异常str.first{ it == 'o' } // 如果未查找到满足条件的元素,会返回nullstr.firstOrNull{ it == 'o' }
1.2、 获取最后一个元素
主要包含first()、firstOrNull()和first{}和firstOrNull{}四个函数
last()和lastOrNull()
作用 :查找字符串的最后一个元素
区别 :若字符串为空串时,前者会抛出NoSuchElementExcept ion异常 ,后者会返回null
例:
val str = "kotlin very good"// 如果字符串为空串时,会抛出NoSuchElementException异常// 其中 lastIndex 是一个拓展属性,其实现是 length - 1str.last() <==> str.get(lastIndex) <==> str[lastIndex]// 如果字符串为空串时,会返回nullstr.lastOrNull()
last{
}和lastOrNull{
}
作用 :查找等于某一个字符的最后一个元素
区别 :未查找到满足条件的元素,前者会抛出NoSuchElementException异常 ,后者会返回null
例:
val str = “kotlin very good”// 如果未查找到满足条件的元素,会抛出NoSuchElementException异常// 其实从源码中我们发现其是对原字符串反转之后再进行遍历查找满足条件的元素。这样遍历的次数就减少了str.last{ it == ‘o’ } // 如果未查找到满足条件的元素,会返回nullstr.lastOrNull{ it == ‘o’ }
1.3、查找元素
1.3.2、find{} | findLast{}
其实查找元素提供了两个高阶函数find{}、findLast{}。不过其内部都是调用firstOrNull()、lastOrNull()函数进行处理。这里不多作累述。
1.3.2、 查找对应元素的下标
- indexOf() : 查找某一个元素或字符串在原字符串中第一次出现的下标。
- indexLastOf() : 查找某一个元素或字符串在原字符串中最后一次出现的下标。
- indexOfFirst{} : 同indexOf()
- indexOfLast{} : 同indexLastOf()
例:
val str = "kotlin very good"println(str.indexOfFirst {
it == 'o' })println(str.indexOfLast {
it == 'o' })println(str.indexOf('o',0))println(str.indexOf("very",0))println(str.lastIndexOf('o'))println(str.lastIndexOf("good"))
1
14
1
7
14
12
二、字符串截取
如果你有Java或者其他语言的编程基础。相信您对字符串的截取应该不会陌生。您可以继续的往下看,就当作是对字符串截取只是的一个巩固。当然,您也可以直接的跳过本节内容,因为在Kotlin中,字符串的截取的函数subString()是调用了Java中的subString()函数。
在Kotlin中除了调用subString()函数外,还可以调用subSequence()函数,有兴趣的朋友可以去看看源码。
2.1、 用subString()函数截取
我们看一看subString()函数的源码
@kotlin.internal.InlineOnlypublic inline fun String.substring(startIndex: Int): String = (this as java.lang.String).