递归之初体验

刚刚遇到一个需求,需要转义字符,比较有意思:
接收一段字符串

eg1:“中文,Chaina\,\,\,\,,哈哈”
eg2:“aa,aa\\,bb,cc\\\\,dd,6,hh

根据“,”分隔字符串,但是含有转义字符“\”的,不用分隔,去掉转义字符“\”

String[] array =new String[“中文”,”Chaina,,,, “,”哈哈” ];(像这样)

个人思路:(PS:欢迎指导新的思路)
首先通过String.split(”,”)截取成数组。
然后数组转成Arraylist(PS:数组不能直接删)
然后判断如果list.(position)中存在”\”时,将其替换成”,”
然后将position和position+1合成新的position,
然后将position+1这个remove()掉。

于是想到了递归,发现for()循环太麻烦了

private  List<String>  Change(List<String> alist){

        for(int i = 0 ; i < alist.size() ; i++){

            if(alist.get(i).contains("\\")){
                String tt  =  alist.get(i).replace("\\",",");
                alist.set(i,tt+alist.get(i+1));
                alist.remove(i+1);
                return Change(alist);
            }
        }
        return alist;
    }

ps:上面代码还是有的小问题,eg2就出了问题,所以一个一个解析来吧)
不解释,来波新的:

//如果第一个字符是","去掉","(递归)
private String isC(String string) {     //判断第一个字符是否为 ,
        String six = string;
        for (int i = 0; i < six.length(); i++) {
            if (six.charAt(0) == 44) {
                six = six.substring(1, six.length());
                return isC(six);
            }
        }
        return six;
    }
List<String> list = new ArrayList<String>();
private void Six(String star) {
        String cut = "";
        char[] ar = new char[star.length()];
        for (int i = 0; i < star.length(); i++) {
            ar[i] = star.charAt(i);
        }
        for (int i = 0; i < ar.length; i++) {
            if (ar[i] == 44 && ar[i - 1] == 92) {  
                cut = cut.substring(0, cut.length() - 1);
                cut += String.valueOf(ar[i]);
            } else if (ar[i] == 44) {       
                int num = list.size();
                list.add(num, cut);
                cut = "";
            } else {
                cut += String.valueOf(ar[i]);
                if (i == ar.length - 1) {
                    int num = list.size();
                    list.add(num, cut);
                    cut = "";
                }
            }
        }
    }
发布了40 篇原创文章 · 获赞 45 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/CGG92/article/details/79570908