首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )

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

作者头像
韩曙亮
发布2023-03-30 18:40:55
发布2023-03-30 18:40:55
2K0
举报

文章目录

一、字符串替换函数 replace


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

代码语言:javascript
复制
/**
 * 返回一个新字符串,通过替换此字符序列中匹配给定正则表达式的每个子字符串获得
 * 用给定的[替换]。
 *
 * [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)

代码示例 :

代码语言:javascript
复制
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 就替换为 % , 其它字母保持不变 ;

执行结果 :

代码语言:javascript
复制
he%%? w?r%d

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


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

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

代码示例 :

代码语言:javascript
复制
fun main() {
    val name0 = "Tom"
    val name1 = "Tom"

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

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

执行结果 :

代码语言:javascript
复制
true
true

对比代码示例 :

代码语言:javascript
复制
fun main() {
    val name0 = "Tom"

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

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

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

执行结果 :

代码语言:javascript
复制
true
false

三、字符串遍历 forEach


调用 字符串 String 的 forEach 函数 ,

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

并且 针对该字符 执行相应 Lambda 表达式 的操作 ;

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

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

String#forEach 函数原型 :

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

代码示例 :

代码语言:javascript
复制
fun main() {
    val name = "Tom"
    name.forEach {
        println(it)
    }
}

执行结果 :

代码语言:javascript
复制
T
o
m
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、字符串替换函数 replace
  • 二、字符串比较操作符 == 和 ===
  • 三、字符串遍历 forEach
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档