您的位置:首页 > 其它

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

2016-11-07 21:05 190 查看
     给定三个字符串str,from和to,把str中所有的from的子串全部替换成to字符串,对连续出现的from的部分要求只替换成一个to字符串,返回最终的结果字符串。

 举个栗子:

      str="123abc",from="abc",to="4567",返回"1234567"。

     str="123",from="abc",to="456",返回"123"。

     str="123abcabc",from="abc",to="X",返回"123X"。 

代码如下:

   public class Test {

public static void main(String[] args) {
// TODO 自动生成的方法存根

String s="123abc";
//s="123";
s="123abcabc";
String from="abc";
String to="4567";
to="456";
to="X";
System.out.println(fun(s,from,to));
}

private static String fun(String s, String from, String to) {
// TODO 自动生成的方法存根

if(s==null||from==null||s.equals("")||from.equals("")) return s;
int j=0;
int k=0;
int count=0;//计算已经替换的次数

StringBuffer sb=new StringBuffer();
for(int i=0;i<s.length();i++){
k=0;
while(k<from.length()&&from.charAt(k)==s.charAt(i+k)){
k++;
}
if(k==from.length()){//说明找到了s中与from中相同的部分
j=0;

//开始执行替换
if(count==0){
   while(j<=to.length()-1){
    sb.append(to.charAt(j));
    j++;
     }
    i=i+k-1;
    j=0;
    count++; }
else{
return sb.toString();
}
}
else{//没找到from的情况

sb.append(s.charAt(i));

}
}
if(sb.length()==0)//表示没有找到一个满足要求的from
   return s;
else
return sb.toString();
}

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