kotlin - 卡在给定数组的逻辑上
问题描述
我有这个代码:
val string = "<p></p>this<p></p>"
val arrs = listOf("<p data-id=\"1\"></p>", "<p data-id=\"2\"></p>")
var replacedString = ""
arrs.forEach {
val pTag = "<p></p>"
replacedString = string.replace(pTag, it) // <-- I know this is the culprit, but I got stuck. don't know what to do anymore
}
println(replacedString)
它应该显示<p data-id="1"></p>this<p data-id="2"></p>
,但它显示
<p data-id="2"></p>this<p data-id="2"></p>
了
注意data-id
值根据列表递增
主要问题是string
变量和listOf
意志是动态的。
例如:
val string = "<p></p>this<p></p>that<p></p>"
val arrs = listOf("<p data-id=\"1\"></p>", "<p data-id=\"2\"></p>", "<p data-id=\"3\"></p>")
或者
val string = "<p></p>this<p></p><p></p>that"
val arrs = listOf("<p data-id=\"1\"></p>", "<p data-id=\"2\"></p>", "<p data-id=\"3\"></p>")
等等等等
解决方案
fun main(args: Array<String>) {
println(replacePtag("<p></p>this<p></p><p></p>that"))
//<p data-id=1></p>this<p data-id=2></p><p data-id=3></p>that
println(replacePtag("<p></p>this<p></p>"))
//<p data-id=1></p>this<p data-id=2></p>
}
fun replacePtag(inputHtml: String): String {
val tag = "<p></p>"
fun p(id: Int): String = "<p data-id=$id></p>"
var input = inputHtml
var currentId = 1
var tmp = input.replaceFirst(tag, p(currentId))
currentId++
while (tmp != input) {
input = tmp
tmp = tmp.replaceFirst(tag, p(currentId))
currentId++
}
return input
}
推荐阅读
- java - 如何使用不同类型的用户打开相同的移动应用程序并使用appium在它们之间切换
- java - 扩展 BaseActivity 的 AsyncTask 类中的非法前向引用
- php - 用于在派生表中搜索匹配项的 SQL 查询
- mysql - 生成带有月份和年份前缀的自动增量唯一 ID
- javascript - 504(网关超时)问题
- javascript - 通过 XMLHttpRequest 登录系统所需的安全要求
- contao - contao主题安装问题。它显示找不到模板
- javascript - 如何从 Firebase 实时数据库获取随机数据到 Highcharts?
- javascript - 编写一个 React 钩子来处理鼠标单击时的多个 div 可见性
- c++ - 顺序文件处理:将数据应用于数据库会导致唯一密钥违规