【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )
创始人
2024-05-09 14:54:21
0

在这里插入图片描述

文章目录

  • 一、字符串替换函数 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 语言中的字符串比较操作符 :

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

代码示例 :

fun main() {val name0 = "Tom"val name1 = "Tom"// 比较内容, 相当于 Java 中的 equals 方法println(name0 == name1)// 比较地址, 相当于 Java 中的 == 操作符// 二者都是常量池的相同地址println(name0 === name1)
}

执行结果 :

true
true

在这里插入图片描述


对比代码示例 :

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

在这里插入图片描述





三、字符串遍历 forEach



调用 字符串 StringforEach 函数 ,

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

并且 针对该字符 执行相应 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

在这里插入图片描述

相关内容

热门资讯

大雾黄色预警:河北山西等7省市...   央视网消息:据中国天气网消息,中央气象台11月6日18时继续发布大雾黄色预警:  预计,6日夜间...
手绘长图|共享数智未来,为构建...   监制:翟亚菲、杨璐  策划:杨璐  制图:陈义超  支持:黄丹琳、于浩波  出品:环球网评论部、...
深耕中国丨马凯硕:“事实证明中...   “中国是全球唯一一个专门举办国际进口博览会的国家,这本身就是一项极具积极意义的举措。世界多国都致...
美国学者:对华关税“回旋镖效应...   中新网上海11月6日电 (记者 李雨昕)美国哥伦比亚大学教授、联合国前高级顾问杰弗里·萨克斯5日...
青稞田里话丰收——西藏“藏粮于...   图为深秋时节,在拉萨市林周县强嘎乡典冲村,当地农民用传统方式打场(资料图片)。记者 王敏 摄  ...
我国首座双层斜拉—悬索协作体系...   11月6日上午,我国首座双层斜拉—悬索协作体系大桥——铜陵长江三桥正式通车,这也是长江安徽段第1...
土耳其国家情报局局长会见哈马斯...   中新社北京11月6日电 综合消息:土耳其国家情报局局长易卜拉欣·卡林当地时间5日在土耳其城市伊斯...
多家房企债务重组现新进展 涉及...   中新社北京11月6日电 (记者 庞无忌)今年以来,多家中国房企债务重组、重整取得新进展,房地产行...
全能型冷空气来袭 降温日历看你...   中国天气网讯 进入11月,冷空气虽然频繁影响我国,但实力较弱。不过昨天(11月4日)夜间起,一股...
小米通话将于12月3日停止服务   11月5日消息,小米通话发布公告称,将于2025年12月3日停止服务。  公告称,由于产品调整,...