代码之家  ›  专栏  ›  技术社区  ›  Gambit1614

在Scala中将数字从字符串提取到列表中

  •  3
  • Gambit1614  · 技术社区  · 8 年前

    我有以下字符串:

    var myStr = "abc12ef4567gh90ijkl789"
    

    列表的大小不是固定的,它包含介于两者之间的数字。我想提取这些数字,并以列表的形式以这种方式存储它们:

    List(12,4567,90,789)
    

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

    1 回复  |  直到 8 年前
        1
  •  11
  •   Wiktor Stribiżew    8 年前

    似乎您可以使用

    ("""\d+""".r findAllIn myStr).toList
    

    请参阅 Scala demo \d+ findAllIn 在字符串中搜索模式的多个匹配项(同时取消模式定位,以便找到部分匹配项)。

    myStr.split("\\D+").filter(_.nonEmpty).toList
    

    看见 another demo . 在这里 \D+ 匹配一个或多个非数字字符,这些块用于分割(结果中这些块之间的文本)。 .filter(_.nonEmpty)

    推荐文章