我有一种电话号码屏蔽的方法。我需要用星号替换除最后4位数字以外的所有数字。
示例输入为:+91 (333) 444-5678和+1(333) 456-7890。输出应该如下所示:
但我的输出实际上是这样的:
以下是我的代码:
public static String maskPhoneNumber(String inputPhoneNum){
return inputPhoneNum.replaceAll("\\(", "-")
.replaceAll("\\)", "-")
.replaceAll(" ", "-")
.replaceAll("\\d(?=(?:\\D*\\d){4})", "*");
}
我的方法适用于国家代码中不同数量的数字,但在国家代码之后的三位数旁边有括号的情况下会出错(而不是数字之间有空格)。 我希望能得到一些提示,以便改进我的方法!
(333)456-7890
的预期结果是什么?***-***-7890
?请查看此更新的Java演示。 - Wiktor StribiżewappendReplacement
,那它早已经存在了,我们可以重构当前的 OP 解决方案来使用这个方法,但在这里并没有真正帮助到我们,反而可能会变得更加“棘手”。你看,你的解决方案并没有提供预期的结果。 - Wiktor Stribiżew