0

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

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

任何答案都会有所帮助。

4

5 回答 5

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);
}
于 2013-10-18T05:33:52.977 回答
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

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

于 2013-10-18T05:31:54.400 回答
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
于 2013-10-18T05:43:24.530 回答
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

来源:互联网。我将此代码用于我的一个项目。我测试了你所有的输入,效果很好。

于 2013-10-18T05:27:54.720 回答
0

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

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

\D代表除数字以外的任何东西。

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

于 2013-10-18T05:50:48.100 回答