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 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

出典:インターネット。私は自分のプロジェクトの 1 つにこのコードを使用しました。すべての入力をテストしましたが、問題なく動作しました。

于 2013-10-18T05:27:54.720 に答える
0

数字を含まないすべての行と数字以外のすべてを 1 行で取り除くことができます。

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.replaceAll。としてそれを行う

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

\D数字以外を表します。

文字列ごとに、他のすべての文字を空の文字列に置き換えて、strすべての数字を返します。str

于 2013-10-18T05:50:48.100 に答える
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

この出力には、後処理する空白がまだあることに注意してください。つまり、最初の改行と、最後の 2 行の間にある 2 つの改行です。

于 2013-10-18T05:31:54.400 に答える