-1

Java 正規表現エンジンを使用しており、文字列の最初の 3 桁の後のすべての数字を削除する方法が必要です。私は後ろを前向きに見ようとしましたが、うまくいきませんでした。

ここに私が持っているデータのタイプがあります

213-333-4444

233.444.5556

(636) 434-5555

これは私が到達しようとしている結果です:

213-222-2222

233.222.2222

(636) 222-2222

したがって、正規表現は、すべての数値文字を 2 に置き換える最初の 3 桁以降を探します。

4

4 に答える 4

2

単一の正規表現でそれを行うことを強制しないでください。複数を使用してください。たとえば、3 の最後の数の最終的な位置を決定し、その位置から正規表現を置き換える単純な数値を実行します。

于 2012-12-28T15:39:59.053 に答える
0

どうですか:

    String[] strings = {
            "213-333-4444",
            "233.444.5556",
            "(636) 434-5555"
    };
    String regex = "(\\D*\\d{3}\\D*)[\\d]{3}(.?)[\\d]{4}";
    String replacement = "$1222$22222";
    for (String string : strings) {
        System.out.println(string.replaceAll(regex, replacement));
    }

出力:

213-222-2222
233.222.2222
(636) 222-2222
于 2012-12-28T16:24:24.183 に答える
0

この方法で解決策を得ました..試してみてください..

int count=0;
Pattern pattern = Pattern.compile("(\\d|\\D)");
Matcher m = pattern.matcher("213-333-4444");  //change this according to your need
while (m.find()) {
    Pattern pattern1 = Pattern.compile("(\\d)");
    Matcher m1 = pattern1.matcher(m.group());
    if(m1.find())
    {
        count++;
        if(count>3)
            System.out.print(m.group().replace(m.group(), "2"));
        else
             System.out.print(m.group());
    }
    else
        System.out.print(m.group());
        }
于 2012-12-28T16:25:00.497 に答える
-2

正規表現を使用する代わりに、4番目の要素から始まる文字列の各文字をループして(最初の3つを残したいので)、それが数値かどうかを確認し、目的の操作を実行してみませんか.

于 2012-12-28T15:39:09.580 に答える