替换字符串中连续出现的指定字符串

题目:

字符串之替换字符串中连续出现的指定字符串

给定3个字符串str from to已知from字符串无重复字符,把str中所有from的子串全都替换成to字符串,连续出现from只需要换成一个to就可。

例如:

str=”123adc” from = “adc” to =”4567” 返回1234567

str=”123” from = “adc” to =”4567” 返回123

str=”123adcabc” from = “adc” to =”X” 返回123X

实现代码:

//替换字符串中连续出现的指定字符串  
    public static void clear(char[] chas,int end,int len){
        //把找到的字串赋0
        while(len--!=0){
            chas[end--]=0;
        }
    }

    public static String replace(String s,String from,String to){
        if(s==null||from==null||s.equals("")||from.equals("")){
            return s;
        }
        char[] chas=s.toCharArray();
        char[] chaf=from.toCharArray();
        int match=0;
        for(int i=0;i<chas.length;i++){
            if(chas[i]==chaf[match++]){//如果第一个字符相同,依次看后面的字符
                if(match==chaf.length){//指导相同的字符数等于from的长度
                    clear(chas,i,match);//将原字串中的from清零
                    match=0;//重新开始寻找
                }
            }
                else{//没有完全相同,即当前字符不匹配from
                    if(chas[i]==chaf[0]){//判断当前字符字符是否同from首字符 
                        i--;//是的话,从当前位置开始重新匹配from
                    }
                    match=0;
                }
            }

            String res="";
            String cur="";
            for(int i=0;i<chas.length;i++){
                if(chas[i]!=0){//如果不是from字符
                    cur+=String.valueOf(chas[i]);//累加到cur
                }
                if(chas[i]==0&&(i==0||chas[i-1]!=0)){//001200,两种情况
                    res=res+cur+to;
                    cur="";//看后面还有没有不为from的字符
                }       
        }
            if(!cur.equals("")){//没找到from,只有存到cur的字符
                res=res+cur;
            }
        return res;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值