替换字符串中连续出现的指定字符串
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();
}
}
举个栗子:
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();
}
}
相关文章推荐
- 字符串问题---替换字符串中连续出现的指定字符串
- 字符串之替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 字符串之替换字符串中连续出现的指定字符串
- 5.6 替换字符串中连续出现的指定字符串
- 字符串——替换字符串中连续出现的指定字符串
- 替换字符串中连续出现的指定字符串
- 给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A
- java判断字符串中某字符出现的位置,并替换指定指定内容
- 只替换字符串中连续出现2次的地方
- 算法:字符串编码 (将连续的字符替换成“连续出现的个数+字符”)
- 给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。
- 给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。
- 将字符串中连续出现两次的单词,替换为一个单词
- 替换字符串中的指定子串
- 取得字符串中指定子字符串出现第n次的位置,效率不高,勉强可用
- 查询字符串在指定字符串中出现的次数
- 批处理查找和替换文件指定字符串