java中屏蔽电话号码的需求可以这样写吗?

img


如图所示,是charAt方法不行还是我写错了,用for循环来解决这个需求会太浪费资源了吗

两个问题,第一,用循环遍历的方式替换的是可行的,但是不要用replace,而是把字符串分割成字符数组后直接给字符数组指定下标替换为*就可以了
第二,这么弄确实浪费资源,一般来说都使用正则匹配替换


public String replace(char oldChar, char newChar) {
        if (oldChar != newChar) {
                return new String(buf, true);
            }
        }
        return this;

replace如果参数不一样的话,返回的是个新字符串,你那样写的话,永远是在替原来的字符串,所以最后相当于 原手机号把charAt(6)的都换成*了

字符串截取首3位,尾部4位,然后中间输入4个星,连起来就好了