Android Kotlin正则表达式替换子字符串,获取被替换的子字符串

时间:2018-02-18 16:11:25

标签: android regex kotlin

如果我有一个字符串,比如说,

"Hello, world!" 

的正则表达式
"world".toRegex()

我打电话

"Hello, world!".replace("world".toRegex(), "universe")

我得到了结果字符串

"Hello, universe!"

这一切都按预期工作......但是,如果我想保留我取出的那个字符串的副本怎么办?我想在变量中保留“世界”的副本。

2 个答案:

答案 0 :(得分:3)

您可以使用String#replace()方法的回调并在其中分配变量:

var needle = ""
val result = "Hello, world!".replace("world".toRegex()) { needle = it.value; "universe" }
println("Replacement result: " + result)
println("Found match: " + needle)

结果:

Replacement result: Hello, universe!
Found match: world

请参阅online Kotlin demo

您可以使用MutableList<String>来保存匹配列表并添加找到的匹配项:

var needle = mutableListOf<String>()
val result = "Hello, world! This world is too small.".replace("world".toRegex()) { needle.add(it.value); "universe" }

结果:

Replacement result: Hello, universe! This universe is too small.
Found match: [world, world]

请参阅another Kotlin demo

答案 1 :(得分:-2)

val str = "Hello, world!"
val regex = "world".toRegex()
val matchResult = regex.find(str)
val match = matchResult?.value.orEmpty()
val replaced = str.replace(regex,"universe")