您的位置:首页 > 其它

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

2017-11-23 10:17 316 查看
题目:

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

给定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="";

4000
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐