gpt4 book ai didi

java - 用第二个字符和用正则表达式打印的最后四个字符在 Java 中屏蔽电话号码

转载 作者:行者123 更新时间:2023-11-30 12:02:04 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式打印字符串的第二个字符和最后四个字符。

这是我的正则表达式,它只打印 + 和字符串的最后四个:

s.replaceAll("\\w(?=\\w{4})", "*");

我正在使用:“+13334445678”作为测试虚拟数据。

我希望它是:+1******5678我得到:+*********5678

我做错了什么?

最佳答案

使用单个正则表达式屏蔽电话号码可能很复杂。一段时间后,可能需要一段时间才能记忆起正则表达式 (?<!^\+)[0-9](?=[0-9]{4}) 的作用😊

更直接的解决方案是使用 substring 方法和简单的替换 replaceAll("\\d", "*") :

private static String maskPhoneNumber(String tel) {
if (tel.length() < 6) {
return tel;
}
return tel.substring(0, 2)
+ tel.substring(2, tel.length() - 4).replaceAll("\\d", "*")
+ tel.substring(tel.length() - 4);
}

例子

maskPhoneNumber("+13334445678"); // +1******5678
maskPhoneNumber("+1-333-444-5678"); // +1-***-***-5678
maskPhoneNumber("+1 (333) 444-5678"); // +1 (***) ***-5678

如果您不想保留电话号码格式(破折号、空格、方括号),请使用再添加一个替换项 (replaceAll("[^\\d]", "")):

tel.substring(0, 2)
+ tel.substring(2, tel.length() - 4)
.replaceAll("[^\\d]", "")
.replaceAll("\\d", "*")
+ tel.substring(tel.length() - 4);

例子

maskPhoneNumber("+13334445678"); // +1******5678
maskPhoneNumber("+1-333-444-5678"); // +1******5678
maskPhoneNumber("+1 (333) 444-5678"); // +1******5678

这种命令式风格的代码不像单个正则表达式那么优雅,但可能更容易被任何开发人员理解。

关于java - 用第二个字符和用正则表达式打印的最后四个字符在 Java 中屏蔽电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58981675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com