1、编写代码完成如下功能:
* public static String replace(String text, String target, String replace){
* ....
* }
* 示例:replace(“aabbccbb”, “bb”, “dd”); 结果:aaddccdd
* 注意:不能使用String及StringBuffer等类的replace等现成的替换API方法。
分析二:
* public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
*
* 1、使用target作刀,将text分割为不包含target的几个部分放至字符串数组s中;
* 2、判断:text是否以target起首(a)或是以target结尾(b),
* (1).若a、b均为false,则除去s最后一个元素外其余每个元素后均紧跟着一个replace为一对
* 顺序添加至可变字符序列sb(StringBuilder)中;
* (2).若a为true,b为false,则先添加一replace,后按照(1)中步骤添加元素至sb;
* (3).若a为false,b为true,则按照(1)中步骤添加元素后另添加一replace至sb;
* (4).若a、b均为true,则按照(2)中步骤添加元素后另添加一replace至sb;
package fuxiday0714;
public class Test06_01 {
public static void main(String[] args) {
/* 测试2:
String text = "aabbccbb";
String[] s = text.split("bb");
for(String str : s) {
System.out.println(str);
}*/
String str2 = replace2("aabbccbb", "bb", "dd");
System.out.println("将字符串"+"aabbccbb"+"中的"+"bb"+"替换为"+"dd"+"后的结果是:" + str2);
}
private static String replace2(String text, String target, String replace) {
String[] s = text.split(target);
StringBuilder sb = new StringBuilder();
boolean a = false;
boolean b = false;
while(text.indexOf(target)!=-1) {
int index = text.indexOf(target);
if(text.indexOf(target) == 0) {
a = true;
}
if(text.indexOf(target) == (text.length()-target.length())) {
b = true;
}
text = text.substring(index + target.length());
}
System.out.println("a = " + a + ", b = " + b);
if(!a && !b) {// a、b均为false
add(s, sb, replace);
} else if(a && !b) {// a为true,b为false
sb.append(replace);
add(s, sb, replace);
} else if(!a && b) {// a为false,b为true
add(s, sb, replace);
sb.append(replace);
} else {// a、b均为true
sb.append(replace);
add(s, sb, replace);
sb.append(replace);
}
return sb.toString();
}
private static void add(String[] s, StringBuilder sb, String replace) {
for(int i = 0; i < s.length; i++) {
if(i < s.length - 1) {
sb.append(s[i]).append(replace);
} else {
sb.append(s[i]);
}
}
}
}
仅供参考,错误之处还请大家指正,共同进步。