-1

我正在使用 java regex 引擎,需要一种方法来删除字符串中前 3 位数字之后的所有数字。我已经尝试过正面的看法,但没有奏效。

这是我拥有的数据类型

213-333-4444

233.444.5556

(636) 434-5555

这是我试图达到的结果:

213-222-2222

233.222.2222

(636) 222-2222

因此,正则表达式将查找前 3 位和过去的数字,将所有数字字符替换为 2。

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