【问题标题】:Trying to pull out certain numbers from a string [closed]试图从字符串中提取某些数字[关闭]
【发布时间】:2014-07-28 21:03:21
【问题描述】:

我有一串数字,看起来像这样

 ["100000100685716-2","603834770-2", "604544970-3"]

有人可以帮助我使用正则表达式来匹配每个 long(“-”之前的第一个数字),以便我可以将其添加到数组中吗?

【问题讨论】:

  • 是的,有人可以帮助你。请说明您尝试了什么以及为什么它不起作用。
  • str.split("-")[0] 看起来可以工作时,为什么还要使用正则表达式? (和Long.parseLong()
  • 您发布的内容看起来像一个字符串数组。那应该是你的输出吗?
  • 感谢大家的帮助,我找到了我要找的东西 :)

标签: java arrays regex


【解决方案1】:

以下正则表达式应该可以工作:(\d+)-

【讨论】:

  • 这个答案也会选择字符串中的“-”,我不相信他想要“-”号。
  • @IronWilliamCash 这就是括号的重点;只会捕获数字。
  • hmmm,我的正则表达式应用程序也选择了“-”......很奇怪
  • @IronWilliamCash 正则表达式将匹配 -,但它还应该创建一个仅包含 \d+ 的组
【解决方案2】:

这里不需要正则表达式:

  • 使用int pos = str.indexOf('-') 获取破折号的位置
  • 使用str.substring(0, pos) 获取字符串的初始部分。

如果输入字符串中的破折号是可选的,则需要添加对pos 的检查,使其为非负数。

【讨论】:

    【解决方案3】:
    (?:\"\d+)
    

    这应该完全符合您的要求

    【讨论】:

      【解决方案4】:
      String s = "[\"100000100685716-2\",\"603834770-2\", \"604544970-3\"]";
      System.out.println(s.split("-")[0].substring(2));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-03
        • 1970-01-01
        • 2020-12-27
        • 2015-10-04
        • 2017-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多