如何在java中使用正则表达式将数字与String分开?

时间:2013-10-18 05:22:41

标签: java regex

我已经知道这个号码可以很容易地从String中拆分。但我在正则表达式中遇到问题。我有这样的字符串,

Call Numbers:
US Toll Free: 1-866-394-4524
UK Toll Free: 08081681755
India Toll Free: 180030121212
Mobile Number: 04412345678
Mobile Number: 08012345678  
Conference Bridge: 12345678

拨打您所在位置的拨入号码,并在提示时输入会议代码,然后按#

我想这样显示:

18663944524    
08081681755    
180030121212    
04412345678    
08012345678    
123456789

任何答案都会有所帮助。

5 个答案:

答案 0 :(得分:1)

final Pattern myPattern = Pattern.compile("[\\w\\s]+:\\s+([\\d\\-]+)?\\s*");

请注意([\\d\\-]+)是一个群组,我们可以抓住它。 对此匹配应该有效:

String line = // the current line in the file..

Matcher matcher = myPattern.matcher(line);
if (matcher.matches()) {
  String theNumber = matcher.group(1);
  System.out.println("We matched!!!: " + theNumber);
}

答案 1 :(得分:0)

你可以尝试这样:

String phoneStr="US Toll Free: 1-866-394-4524";

Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(phoneStr);
while(m.find()) {
   System.out.print(phoneStr.group(1));
}

输出:

18663944524

来源:互联网。我在我的一个项目中使用了这段代码。我测试了你的所有输入,它工作正常。

答案 2 :(得分:0)

简单而肮脏的方法是用空的String替换所有非数字字符,从返回的车厢中保存。

以下是一个例子:

// your original text
String text = "Call Numbers: \n" + "US Toll Free: 1-866-394-4524\n"
        + "UK Toll Free: 08081681755\n" + "India Toll Free: 180030121212\n"
        + "Mobile Number: 04412345678\n" + "Mobile Number: 08012345678\n\n" +
            "Conference Bridge: 12345678";
// prints the replacement
System.out.println(text.replaceAll("[\\D&&[^\n]]", ""));

输出:

18663944524
08081681755
180030121212
04412345678
08012345678

12345678

请注意,此输出中仍有空格进行后处理,即第一个返回滑架和最后两行之间的双返回滑架。

答案 3 :(得分:0)

您可以在一行中删除所有不包含数字的行和所有非数字:

str = str.replaceAll("[ :a-zA-Z-]", "").replaceAll("(?m)^$\n", "");

这是一些测试代码:

String str = "Call Numbers: \n" + "US Toll Free: 1-866-394-4524\n"
    + "UK Toll Free: 08081681755\n" + "India Toll Free: 180030121212\n"
    + "Mobile Number: 04412345678\n" + "Mobile Number: 08012345678\n\n" +
        "Conference Bridge: 12345678";
str = str.replaceAll("[ :a-zA-Z-]", "").replaceAll("(?m)^$\n", "");
System.out.println(":"+str);

输出(有空行):

18663944524
08081681755
180030121212
04412345678
08012345678
12345678

答案 4 :(得分:0)

您可以使用String.replaceAll。这样做

str.replaceAll("\\D","");

\D代表除数字之外的任何内容。

对于每个字符串str,它通过用空字符串替换每个其他字符来返回str中的所有数字。