我有一个文本,应该保存在android string.xml资源中。为此,我想将其保存在Data类列表中。
标题1
Body1 .....
标题2
Body2 ......
标题周围有2个换行符,我需要从正文中拆分标题。这个怎么做?是否有任何正则表达式模式?
您可以在kotlin本身中解析它,它将通过使用行序列以类似于regex的O(n)步骤进行解析。
示例:
fun parseTitle(str: String): Sequence<String> = sequence {
var emptyLines = 2
str.lineSequence().forEach {
when {
emptyLines > 1 -> {
yield(it)
emptyLines = 0
}
it.isNotEmpty() -> emptyLines = 0
else -> emptyLines++
}
}
}
val test =
"""
Title1
Body1 .....
Title2
Body2......
""".trimIndent()
println(parseTitle(test).toList()) // [Title1, Title2]
您可以.split("\n\n")
您的字符串以获取字符串列表,然后使用.chunked(2) { ... }
将结果列表分组为字符串对,将每对映射到您的数据类实例。
示例:
data class Item(val title: String, val body: String)
fun parseItems(input: String): List<Item> =
input.splitToSequence("\n\n")
.chunked(2) { (title, body) -> Item(title, body) }
.toList()
fun main(args: Array<String>) {
val testData = """
Title1
Body1 .....
Title2
Body2......
""".trimIndent()
println(parseItems(testData))
}
它输出以下内容:
[Item(title=Title1, body=Body1 .....), Item(title=Title2, body=Body2......)]
您可以在这里使用它:https://pl.kotl.in/8ix38By7m