字符串替换题目解法2(不能使用String及StringBuffer等类的replace等现成的替换API方法)

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]);
            }
        }
    }
}
    
 

仅供参考,错误之处还请大家指正,共同进步。

 

 

 

 

你可能感兴趣的:(JavaSE基础,String类的split使用)