【问题标题】:extract numbers from string java从字符串java中提取数字
【发布时间】:2018-10-25 01:42:27
【问题描述】:

我正在尝试从以下字符串中提取数字:

(1234-5869)|990-9797

我想要该字符串中的所有数字,例如

1234
5869
990
9797 

【问题讨论】:

  • 如果你说“我正在尝试”,那么你肯定有一些代码不适合你。请将其添加到问题中并解释它有什么问题。
  • Integer[] result = Arrays.stream("1234-5869)|990-9797".split("\\D")).filter(s->!s.isEmpty()).map(Integer::valueOf).toArray(Integer[]::new);

标签: java regex


【解决方案1】:

使用全部替换。

String str = "(1234-5869)|990-9797";

System.out.println(str.replaceAll("\\D", " ")); // " 1234 5869  990 9797"

要将它们放入数组中:

String[] arr = str.split("\\D");

System.out.println(Arrays.toString(arr)); // [, 1234, 5869, , 990, 9797]

然后您可以将它们变成带有循环和StringBuilder 或类似内容的字符串,并删除任何空值。

【讨论】:

    【解决方案2】:

    在您的情况下,您不需要任何正则表达式。您需要拆分字符串。 看这个话题:How to split a string in Java

    或者如果你想不拆分,你可以用一个空格替换所有特殊字符,然后使用这样的 stringTokenizer:

    String str = "(1234-5869)|990-9797";
    str = str.replaceAll("\\D", " ")); // " 1234 5869  990 9797"
    
    StringTokenizer st = new StringTokenizer(str);
    while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
    }
    

    您的答案将与您想要的演示文稿一起出现

    【讨论】:

      【解决方案3】:
      • 结果==> 字符串

        String string="(1234-5869)|990-9797";
        String onlyNumber= string.replaceAll("[^0-9]", "");
        System.out.println("result==>"onlyNumber);
        
      • 结果 ==> 数组

        String string="(1234-5869)|990-9797";
        String normalizedString= string.replaceAll("[^0-9]", ",");
        System.out.println(normalizedString);
        StringTokenizer st = new StringTokenizer(normalizedString, ",");
        List<String> tabNumber= new ArrayList<String>();
        while (st.hasMoreElements()) {
            tabNumber.add((String) st.nextElement());
        }
        

      【讨论】:

        猜你喜欢
        • 2019-10-15
        • 1970-01-01
        • 2020-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        相关资源
        最近更新 更多