在 Kotlin 中从字符串中提取多个整数

vip*_*pin 2 split jsoup kotlin

我有以下格式的单个字符串(来自 Jsoup 的输出)

[<ul>
<li><span></span><a, rel="nofollow"><span>Afterword</span></a></li>
<li><span></span><a, rel="nofollow"><span>MW, Chapter, 2255</span></a></li>
<li><span></span><a, rel="nofollow"><span>MW, Chapter, 2254</span></a></li> 
<li><span></span><a, rel="nofollow"><span>MW, Chapter, 2253</span></a></li> 
<li><span></span><a, rel="nofollow"><span>MW, Chapter, 2252</span></a></li> 
</ul>]
Run Code Online (Sandbox Code Playgroud)

我想从此字符串中提取整数,例如 2255、2254 等。

我使用了在这里找到的各种选项,但没有一个起作用。到目前为止的解决方案只给了我所有组合在一起的数字。

我愿意为此使用 Jsoup 或拆分。

请帮忙。

小智 6

使用正则表达式非常简单https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/

    val string = "[<ul>\n" +
            "<li><span></span><a, rel=\"nofollow\"><span>Afterword</span></a></li>\n" +
            "<li><span></span><a, rel=\"nofollow\"><span>MW, Chapter, 2255</span></a></li>\n" +
            "<li><span></span><a, rel=\"nofollow\"><span>MW, Chapter, 2254</span></a></li> \n" +
            "<li><span></span><a, rel=\"nofollow\"><span>MW, Chapter, 2253</span></a></li> \n" +
            "<li><span></span><a, rel=\"nofollow\"><span>MW, Chapter, 2252</span></a></li> \n" +
            "</ul>]"

    val regex = Regex("\\d+")
    val resultList = regex.findAll(string).map { it.value }.toList()
    println(resultList) //prints [2255, 2254, 2253, 2252]
Run Code Online (Sandbox Code Playgroud)