String 将字符串中的数字提取到Scala中的列表中

String 将字符串中的数字提取到Scala中的列表中,string,scala,String,Scala,我有以下字符串: var myStr = "abc12ef4567gh90ijkl789" 列表的大小不是固定的,它包含介于两者之间的数字。我想提取数字,并以列表的形式存储它们,方法如下: List(12,4567,90,789) 我尝试了上述解决方案,但无法将其扩展到我的案例中。我只是想知道是否有更快或更有效的解决方案,而不仅仅是遍历字符串并使用蛮力逐个提取数字?此外,字符串可以是任意长度。似乎您可以使用 ("""\d+""".r findAllIn myStr).toList 看\d+

我有以下字符串:

var myStr = "abc12ef4567gh90ijkl789"
列表的大小不是固定的,它包含介于两者之间的数字。我想提取数字,并以列表的形式存储它们,方法如下:

List(12,4567,90,789)

我尝试了上述解决方案,但无法将其扩展到我的案例中。我只是想知道是否有更快或更有效的解决方案,而不仅仅是遍历字符串并使用蛮力逐个提取数字?此外,字符串可以是任意长度。

似乎您可以使用

("""\d+""".r findAllIn myStr).toList
看<代码>\d+匹配一个或多个数字,在字符串中搜索模式的多个匹配项(同时取消模式锚定,以便找到部分匹配项)

如果您更喜欢拆分方法,可以使用

myStr.split("\\D+").filter(_.nonEmpty).toList
看。这里,
\D+
匹配一个或多个非数字字符,这些块用于拆分(这些块之间的文本在结果中)
.filter(u.nonEmpty)
将删除由于字符串开头/结尾的匹配而通常出现的空项