在Kotlin
中除了调用subString()
函数外,还可以调用subSequence()
函数,有兴趣的朋友可以去看看源码。
2.1、 用subString()
函数截取
我们看一看subString()
函数的源码
@kotlin.internal.InlineOnly
public inline fun String.substring(startIndex: Int): String = (this as java.lang.String).substring(startIndex)
@kotlin.internal.InlineOnly
public inline fun String.substring(startIndex: Int, endIndex: Int): String
= (this as java.lang.String).substring(startIndex, endIndex)
public fun String.substring(range: IntRange): String = substring(range.start, range.endInclusive + 1)
从以上的源码中我们可以看出,Kotlin
中是使用了Java
中的subString()
函数
其中:
startIndex
参数:截取字符串的开始下标endIndex
参数:截取字符串的结束下标rang
参数,是指一个IntRang
类型,表示一个范围
实例:
val str = “Kotlin is a very good programming language”
println(“s = ${str.substring(10)}”) // 当只有开始下标时,结束下标为length - 1
println(str.substring(0,15))
println(str.substring(IntRange(0,15)))
输出结果为:
a very good programming language
Kotlin is a ver
Kotlin is a very
注意:
- 使用
subString(startIndex,endIndex)
和subString(rang)
时的区别。可以从上边的结果结合源码可以看出来。 - 切记下标越界的情况。即
StringIndexOutOfBoundsException
异常
2.2、用subSequence()
函数截取
在Kotlin
中除了使用上面讲解到的使用subString()
截取字符串外,还可以使用subSequence()
函数截取。
我们看一看其源码实现:
public fun subSequence(startIndex: Int, endIndex: Int): CharSequence
public fun CharSequence.subSequence(range: IntRange): CharSequence = subSequence(range.start, range.endInclusive + 1)
从源码中我们可以看出,其大致和subString()
函数一样,但是其不提供只传递startIndex
的情况
实例:
val str = “Kotlin is a very good programming language”
println(str.subSequence(0,15))
println(str.subSequence(IntRange(0,15)))
输出结果为:
Kotlin is a ver
Kotlin is a very
三、字符串替换
同上述字符串截取一样,如果您有编程经验,可跳过此节。不过对于字符串替换功能,Kotlin
除了实现Java
中的replace()
ha函数外,还提供了另外的replaceFirst()
、replaceAfter()
、replaceBefore()
、replaceIndent()
、等函数。下面会对这些函数意义进行实例讲解。
3.1、replace()函数
replace()
函数提供了4个重载函数。他们能实现不同的功能
3.1.1、 replace(oldChar,newChar,ignoreCase = false)
作用 : 把原字符串中的某一个字符全部替换成新的字符。然后返回新的字符串
oldChar
: 需要替换的字符newChar
: 新的字符ignoreCase
: 是否引用Java
中的replace()
函数。默认值为false
,即用Java
的replace()
函数
例:
// 把字符a
全部替换为A