我有以下字符串:
var myStr = "abc12ef4567gh90ijkl789"
列表的大小不是固定的,它包含介于两者之间的数字。我想提取这些数字,并以列表的形式以这种方式存储它们:
List(12,4567,90,789)
我尝试了上面提到的解决方案 here 但不能扩展到我的情况。我只是想知道是否有更快或更有效的解决方案,而不仅仅是遍历字符串并使用蛮力逐个提取数字?此外,字符串可以是任意长度。
似乎您可以使用
("""\d+""".r findAllIn myStr).toList
请参阅 Scala demo \d+ findAllIn 在字符串中搜索模式的多个匹配项(同时取消模式定位,以便找到部分匹配项)。
\d+
findAllIn
myStr.split("\\D+").filter(_.nonEmpty).toList
看见 another demo . 在这里 \D+ 匹配一个或多个非数字字符,这些块用于分割(结果中这些块之间的文本)。 .filter(_.nonEmpty)
\D+
.filter(_.nonEmpty)