4

私は次のような望ましい出力を得ようとしています:

555
555
5555

コードを使用して:

public class Split {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    String phoneNumber = "(555) 555-5555";

    String[] splitNumberParts = phoneNumber.split(" |-");


    for(String part : splitNumberParts)
        System.out.println(part);

しかし、最初の要素から「()」を取り除く方法がわかりません。

前もって感謝します。

よろしく

4

4 に答える 4

7

StringTokenizerは、2 番目のパラメーターとして文字列にリストできる複数の区切り文字をサポートしています。

StringTokenizer tok = new StringTokenizer(phoneNumber, "()- ");
String a = tok.nextToken();
String b = tok.nextToken();
String c = tok.nextToken();

あなたの場合、これは a = 555、b = 555、c = 5555 になります。

于 2013-01-13T16:42:58.963 に答える
4

最初に置き換えてみませんか?

String phoneNumber = "(555) 555-5555";
String cleaned = phoneNumber.replaceAll("[^0-9]",""); // "5555555555"

次に、部分文字列を使用して必要な部分を取得できます。

于 2013-01-13T16:42:08.947 に答える
1

数字を順番に並べたいだけの場合は、おそらくPatternMatcherクラスを利用して、特定のパターンに一致するすべての部分文字列を見つけることができます\d+

Matcher#find()パターンに一致するすべての部分文字列を取得するには、メソッドを使用する必要があります。Matcher#group()一致した部分文字列を出力するために使用します。

方法は次のとおりです。 -

String phoneNumber = "(555) 555-5555";

// Create a Pattern object for your required Regex pattern
Pattern pattern = Pattern.compile("\\d+");

// Create a Matcher object for matching the above pattern in your string
Matcher matcher = pattern.matcher(phoneNumber);

// Use Matcher#find method to fetch all matching pattern.
while (matcher.find()) {
    System.out.println(matcher.group());
}
于 2013-01-13T16:51:23.500 に答える
1

分割Javaを使用している場合、提供したアイテムが発生した場所から分離された文字列の配列を返すため、現在行っているように分割を行う場合は、次のようなものを追加できます。

phoneNumber.split(" |-|\\(|\\) ");

しかし、それはあまり見栄えがよくありません。したがって、代わりに次のようなことを行うことができます。これは基本的に、Java に数値以外のものをすべて削除するように指示します。

String[] splitNumberParts = phoneNumber.split("\\D+");
于 2013-01-13T16:59:32.353 に答える