Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java字符串中提取数字_Java_Regex - Fatal编程技术网

从java字符串中提取数字

从java字符串中提取数字,java,regex,Java,Regex,我试图从以下字符串中提取数字: (1234-5869)|990-9797 我希望所有的数字都出现在字符串中 1234 5869 990 9797 结果==>字符串 String string="(1234-5869)|990-9797"; String onlyNumber= string.replaceAll("[^0-9]", ""); System.out.println("result==>"onlyNumber); 结果==>数组 String string="(12

我试图从以下字符串中提取数字:

(1234-5869)|990-9797
我希望所有的数字都出现在字符串中

1234
5869
990
9797 
  • 结果==>字符串

    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());
    }
    
    String String=“(1234-5869)| 990-9797”;
    字符串normalizedString=String.replaceAll(“^0-9]”,“,”);
    System.out.println(normalizedString);
    StringTokenizer st=新的StringTokenizer(normalizedString,“,”);
    List tabNumber=new ArrayList();
    而(st.hasMoreElements()){
    tabNumber.add((字符串)st.nextElement());
    }
    
    • 使用replaceAll

      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
      或类似的东西将它们生成字符串,并删除任何空值。

      在您的情况下,不需要任何正则表达式。你需要分开你的绳子。 看看这个话题:

      或者,如果您希望在不拆分的情况下创建它,您可以将所有特殊字符替换为一个空格,然后使用如下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());
      }
      

      您的答案将显示在您想要的演示文稿中

      如果您说“我正在尝试”,您必须有一些不适合您的代码。请将其添加到问题中并解释其错误所在。
      Integer[]result=Arrays.stream(“1234-5869”)990-9797.split(\\D”).filter(s->!s.isEmpty()).map(Integer::valueOf).toArray(Integer[]:new)