Kotlin 被给定数组的逻辑卡住了
我有以下代码:Kotlin 被给定数组的逻辑卡住了,kotlin,Kotlin,我有以下代码: val string = "<p></p>this<p></p>" val arrs = listOf("<p data-id=\"1\"></p>", "<p data-id=\"2\"></p>") var replacedString = "" arrs.for
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)
或
val string=“这个那个”
val arrs=listOf(“”、“”、“”)
等等等等有几个问题
.replace
将替换字符串中出现的所有。这可能是你不想要的。也许您需要使用replaceFirst
replacedString
在每个forEach
过程中都会被覆盖。因此,它将只具有上一次迭代的值,这是您观察到的结果。理想情况下,在此处使用StringBuilder
,并在每次传递时附加replaceString
结果
var replacedString = string
arrs.forEach {
val pTag = "<p></p>"
replacedString = replacedString.replaceFirst(pTag, it))
}
println(replacedString)
var replacedString=string
阿里斯·弗雷奇{
val pTag=“”
replacedString=replacedString.replaceFirst(pTag,it))
}
println(替换字符串)
希望这能让你继续前进funmain(args:Array){
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
}
println(replacePtag(“这个那个”))
//这个那个
println(替换标记(“此”)
//此
}
fun replacePtag(inputtml:String):String{
val tag=“”
funp(id:Int):String=“”
var输入=inputHtml
var currentId=1
var tmp=input.replaceFirst(标记,p(当前ID))
当前ID++
while(tmp!=输入){
输入=tmp
tmp=tmp.replaceFirst(标记,p(当前ID))
当前ID++
}
返回输入
}
你能给我看一下上面完整的伪代码吗?@mending3用伪代码更新了它很接近了。它向我显示了此
此
尽管这是意外的,但我看到了问题。已相应更新。有更有效的方法来做到这一点,这将是目前的工作
var replacedString = string
arrs.forEach {
val pTag = "<p></p>"
replacedString = replacedString.replaceFirst(pTag, it))
}
println(replacedString)
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
}