【问题标题】:how to write regex to extract numbers from a string in Java?如何编写正则表达式以从 Java 中的字符串中提取数字?
【发布时间】:2021-11-11 01:58:28
【问题描述】:

比如我有一组文字“1234568asdjhgsd”,我只想获取数字,怎么办? 以下是我的代码,他无法执行到while步骤

    textView.setText("1234568asdjhgsd");

        String str = (String) textView.getText();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Pattern p;
                p = Pattern.compile("\\d{10}");
                Matcher m;
                m = p.matcher(str);
                
                while (m.find()){
                    String xxx = m.group();
                    System.out.println(xxx);
                }
            }
        });

它没有打印任何东西

【问题讨论】:

标签: java android regex


【解决方案1】:

p = Pattern.compile("\\d{10}"); 这匹配 10 位数字,但您的文本“1234568asdjhgsd”只有 7 位数字。您可以使用Pattern.compile("\\d{7}");,它会起作用。但位数始终必须为

【讨论】:

    【解决方案2】:

    如果匹配数字则打印。

      String str = "1234568asdjhgsd"; 
      Pattern p;
      p = Pattern.compile("\\d");
      Matcher m;
      m = p.matcher(str);
            
      while (m.find()){
          String xxx = m.group();
          System.out.print(xxx);
      }
    

    【讨论】:

      【解决方案3】:

      您可以使用带有正则表达式的 java 方法 replaceAll。这将如下所示:

      String someString = "1234568asdjhgsd";
      String replacedString = someString.replaceAll("0-9","");
      

      replaceAll 的第一个参数意味着它只接受从 0 到 9 的数字,第二个是它将被更改的内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-10
        • 2014-08-25
        • 1970-01-01
        • 2023-01-20
        • 1970-01-01
        • 2023-04-07
        • 2016-02-28
        相关资源
        最近更新 更多