首页 > 解决方案 > 从 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>]

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

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

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

请帮忙。

标签: kotlinsplitjsoup

解决方案


使用正则表达式非常简单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]

推荐阅读