文章目录

  • ​​一、字符串替换函数 replace​​
  • ​​二、字符串比较操作符 == 和 ===​​
  • ​​三、字符串遍历 forEach​​






一、字符串替换函数 replace



字符串替换函数 replace 函数原型如下 :

/**
* 返回一个新字符串,通过替换此字符序列中匹配给定正则表达式的每个子字符串获得
* 用给定的[替换]。
*
* [replacement]可以由文字文本和$-substitution的任意组合组成。来处理替换字符串
* 使用[kotlin.text.Regex.Companion.escapeReplacement]方法进行转义。
*/
@kotlin.internal.InlineOnly
public inline fun CharSequence.replace(regex: Regex, replacement: String): String = regex.replace(this, replacement)

/**
* 返回一个新字符串,通过替换此字符序列中匹配给定正则表达式的每个子字符串获得
* 使用给定函数[transform]的结果,该函数接受[MatchResult],并返回一个字符串用作
* 替换该匹配。
*/
@kotlin.internal.InlineOnly
public inline fun CharSequence.replace(regex: Regex, noinline transform: (MatchResult) -> CharSequence): String =
regex.replace(this, transform)



代码示例 :

fun main() {
var info = "hello world"
var str = info.replace(Regex("[ol]")){
when(it.value) {
"o" -> "?"
"l" -> "%"
else -> it.value
}
}
println(str)
}

在上述代码中 ,

第一个参数 ​​regex: Regex​​ , 是正则表达式 ,

对应代码中的 ​​Regex("[ol]")​​​ , 该正则表达式的含义是 单个字符 ​​o​​​ 或者 ​​l​​ ;

第二个参数 ​​noinline transform: (MatchResult) -> CharSequence): String​​​ , 是返回 ​​String​​ 值的闭包 ,

对应代码中的 匿名函数 / Lambda 表达式 / 闭包 ,

其含义是 : 遇到字母 ​​o​​​ 就替换为 ​​?​​​ , 遇到字母 ​​l​​​ 就替换为 ​​%​​ , 其它字母保持不变 ;



执行结果 :

he%%? w?r%d

【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )_android






二、字符串比较操作符 == 和 ===



Kotlin 语言中的字符串比较操作符 :

  • ​==​​​ 的作用是 比较 两个字符串 的 字符内容是否 相等 ; 相当于 Java 中的 ​​equals​​ 方法 ;
  • ​===​​​ 的作用是 比较 两个字符串 的 堆内存中的 引用地址 是否相等 ; 相当于 Java 中的 ​​==​​ 操作符 ;


代码示例 :

fun main() {
val name0 = "Tom"
val name1 = "Tom"

// 比较内容, 相当于 Java 中的 equals 方法
println(name0 == name1)

// 比较地址, 相当于 Java 中的 == 操作符
// 二者都是常量池的相同地址
println(name0 === name1)
}



执行结果 :

true
true

【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )_kotlin_02



对比代码示例 :

fun main() {
val name0 = "Tom"

var str = "T"
val name1 = str + "om"

// 比较内容, 相当于 Java 中的 equals 方法
println(name0 == name1)

// 比较地址, 相当于 Java 中的 == 操作符
// 此处由于 name1 是运行时计算出来的, 不是常量池中的常量
// name0 是常量池中的常量
println(name0 === name1)
}

执行结果 :

true
false

【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )_android_03






三、字符串遍历 forEach



调用 字符串 String 的 forEach 函数

可以 遍历字符串中的每个字符

并且 针对该字符 执行相应 Lambda 表达式

在 forEach 函数 中 , 可以通过 it 参数 获取对应的 字符 ;

Lambda 表达式 就是 匿名函数 , 也是 闭包 ;



String#forEach 函数原型 :

/**
* 在每个字符上执行给定的[动作]。
*/
public inline fun CharSequence.forEach(action: (Char) -> Unit): Unit {
for (element in this) action(element)
}



代码示例 :

fun main() {
val name = "Tom"
name.forEach {
println(it)
}
}

执行结果 :

T
o
m

【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )_android_04