如何分割一个字符串,并在Kotlin中的分割部分之间植入分隔符?

说我有一个字符串

"Hello! How do you do? Good day!"

我想分割它,我的分隔符是: ?! 使用“分割”功能的结果将是:

 `[Hello, How do you do, Good day]` 

但是,我希望它是:

 `[Hello, !, How do you do, ?, Good day, !]` 

下面是Java中的一个类似的问题: 如何分割一个字符串,还要保留分隔符?

使用lookahead。 在Kotlin中,代码可能是这样的:

 fun main(args: Array<String>) { val str = "Hello! How do you do? Good day!" val reg = Regex("(?<=[!?])|(?=[!?])") var list = str.split(reg) println(list) } 

在这里输入图像描述

这是我这样一个功能的版本:

 fun String.splitKeeping(str: String): List<String> { return this.split(str).flatMap {listOf(it, str)}.dropLast(1).filterNot {it.isEmpty()} } fun String.splitKeeping(vararg strs: String): List<String> { var res = listOf(this) strs.forEach {str -> res = res.flatMap {it.splitKeeping(str)} } return res } //USAGE: "Hello! How do you do? Good day!".splitKeeping("!", "?") 

它不是非常快(方形复杂度),但对于相对较短的字符串很适用。

Interesting Posts