我正在使用 java regex 引擎,需要一种方法来删除字符串中前 3 位数字之后的所有数字。我已经尝试过正面的看法,但没有奏效。
这是我拥有的数据类型
213-333-4444
233.444.5556
(636) 434-5555
这是我试图达到的结果:
213-222-2222
233.222.2222
(636) 222-2222
因此,正则表达式将查找前 3 位和过去的数字,将所有数字字符替换为 2。
不要强制使用单个正则表达式,使用多个。例如,确定最后一个数字 3 的最终位置,然后从该位置运行简单数字替换正则表达式。
怎么样:
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
以这种方式得到解决方案..尝试它..
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());
}
而不是使用正则表达式,为什么不从第 4 个元素开始遍历字符串的每个字符(因为您希望前 3 个保留)并检查它是否为数字并执行所需的操作。