Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算Kotlin中的更换次数?_Kotlin - Fatal编程技术网

如何计算Kotlin中的更换次数?

如何计算Kotlin中的更换次数?,kotlin,Kotlin,以下是我正在做的: val a = listOf("foo bar", "foo bar baz", "bar", "bar") val b = a.count {it.contains("bar")} val aa = a.map { it.replace("bar", "baz") } var c = aa.count {it.contains("bar")} println("replaced: ${b-c}") 这似乎是没有效率的 顺便说一句,我发现我不能很容易地匹配Java/Kotl

以下是我正在做的:

val a = listOf("foo bar", "foo bar baz", "bar", "bar")
val b = a.count {it.contains("bar")}
val aa = a.map { it.replace("bar", "baz") }
var c = aa.count {it.contains("bar")}
println("replaced: ${b-c}")
这似乎是没有效率的


顺便说一句,我发现我不能很容易地匹配Java/Kotlin正则表达式中的空格,只是说。

好的,这里有一个建议:
将列表划分为包含“bar”的元素和不包含“bar”的元素。获取第一个集合并替换相应的元素(也计算它们),然后添加回其他元素(不包含“bar”)

下面是分区的作用:


c不总是0吗?是什么阻止您对空白字符使用\s?很抱歉,回复晚了,这是午夜,富有创意和启发性,只是有点复杂,可能应该使用手动替换为循环。谢谢
val a = listOf("foo bar", "foo bar baz", "bar", "bar")
var replaced = 0
val replacedList = a.partition { it.contains("bar") }.let {
    it.first.map { it.replace("bar", "baz") }.also { replaced = it.size } +
            it.second
}
println(replaced) //4
println(replacedList) //[foo baz, foo baz baz, baz, baz]
inline fun <T> Iterable<T>.partition(
    predicate: (T) -> Boolean
): Pair<List<T>, List<T>> (source)
val replacedList = a.partition { it.contains("bar") }.let { partitions ->
        partitions.first.map { it.replace("bar", "baz") }.also {
            replaced = partitions.first.flatMap { it.split(" ") }.count { it.contains("bar") }
        } + partitions.second
    }