gpt4 book ai didi

java - 正则表达式结果列表而不是 Kotlin 中的第一个结果

转载 作者:行者123 更新时间:2023-11-29 06:27:38 24 4
gpt4 key购买 nike

使用下面的代码,我可以为我的比赛设置几个变量。我想做同样的事情,但填充这些结果的所有实例的 map 。我正在挣扎,需要帮助。

val (dice, level) = Regex("""([0-9]*d[0-9]*) at ([0-9]*)""").matchEntire(text)?.destructured!!

此代码适用于一个实例,我尝试匹配多个实例均无效。

最佳答案

您的解决方案简短易读。这里有一些选项,您使用的选项主要是偏好问题。您可以使用 associate 直接获取 Map方法如下。

val diceLevels = levelMatches.associate { matched ->
val (diceTwo,levelTwo) = matched.destructured
(levelTwo to diceTwo)
}

注意:这会创建一个不可变的映射。如果你想要一个 MutableMap,你可以使用 associateTo .

如果要简洁,可以将解构简化为局部变量,直接对组进行索引。

val diceLevels = levelMatches.associate {
(it.groupValues[2] to it.groupValues[1])
}

或者,使用 let,如果未在别处使用,您还可以避免将 levelMatches 声明为局部变量 --

val diceLevels = Regex("([0-9]+d[0-9]+) at ([0-9]+)")
.findAll(text)
.let { levelMatches ->
levelMatches.associate {
(it.groupValues[2] to it.groupValues[1])
}
}

关于java - 正则表达式结果列表而不是 Kotlin 中的第一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49681439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com