修改字符串中的元素为指定的多个元素

    /**
     * 文档注释:  API帮助文档
     * @param ch  字符数组
     * @return -1参数不合法,如果返回 >0 的数字代表统计的个数
     */
    public static int getCount(char[] ch,char src){
        //参数安全性检验
        if(ch==null){
            return -1;
        }
        int count=0;
        for(int i=0;i<ch.length;i++){
            if (ch[i] ==src) {       //将ch[i]==' '优化为ch[i]==char src   避免代码的鲁棒性,使用于多种情况 (不一定替换掉的是空格)
                count++;//统计空格个数
            }
        }
        return count;
    }

    public static String replace(String str,char src,char aim,int num) {   //char src 原来字符,char aim 目标字符,int num 替换为几个(此时是一对二的关系)
        //参数安全性检测
        if (str == null) {
            return null;
        }
        //扩容操作
        char[] ch = str.toCharArray();//将字符串string转化为字符数组
        int i = ch.length - 1;//i 保存原始数组末端下标
        int count = getCount(ch, src); //统计ch中要替换的字符个数
        ch = Arrays.copyOf(ch, ch.length + (num - 1) * count); //扩容多大
        int j = ch.length - 1;//j 保存新数组末端下标
        while (i >= 0) {
            if (ch[i] == src) { //if i所对应的值为空格
//  这只适用一对二,要具有通用性——>使用for循环
//                ch[j]=aim;  //将其值替换为一个#,用aim字符进行填充
//                j--;
//                ch[j]=aim;//在将j向前移一个格子,在填充一个#
//                j--;
                for (int z = 0; z < num; z++) {
                    ch[j] = aim;
                    j--;
                }
                i--;    //替换完后i仍然在空格位置,应该将它向前移动一位
            } else {
                ch[j--] = ch[i--]; //先将i所对应值赋给j格子,在同时将两个都向前移动一个格子
            }
        }
        return String.valueOf(ch);//将char数组转换为string
    }

    public static void main(String[] args) {
        String result=replace("  i am ",' ','#',2);
        System.out.println(result);


    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值