字符串格式化

Posted zhdsky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串格式化相关的知识,希望对你有一定的参考价值。

public class DeleteStr {
    static StringBuffer end;
    //    static  String startStr = "<123>1<456>8<9</456></123>";
    //    static String startStr = "<2abc>7<df</2d>8></2abc>";
    //    static String startStr = "<123>4<456>>5<2ab>>";
    static String startStr = "<1sd>qwe<<4fg>8><";
    static int leftIndex = 0;//左检查点下标
    static int rightIndex = 0;//右检查点下标
    static int recIndex = 0;//可用数值起始点
    static int leftInidexNum = 0;//左检查点数量
    static int rightInidexNum = 0;//右检查点数量
    static boolean isHaveLeftTag = false;//是否存在左检查点
    static boolean isHaveRightTag = false;//是否存在右检查点

    public static void check(char[] checkCharArray) {
        end = new StringBuffer();
        recIndex = 0;
        rightIndex = 0;
        leftIndex = 0;
        isHaveLeftTag = false;
        isHaveRightTag = false;
        for (int i = 0; i < checkCharArray.length; i++) {
            char leftChar = checkCharArray[i];
            //<123>4<456>>5<2ab>>
            if (isHaveLeftTag) {
                //已经找到了第一个左检查点,开始寻找第一个右检查点
                if (leftChar == ‘<‘) {
                    //找到第二个左检查点,重新设置左检查点坐标,并且跳出本次循环
                    leftIndex = i;
                    continue;
                }
                
                if (leftChar == ‘>‘) {
                    //开始检索右检查点
                    rightInidexNum++;//右检查点数量++
                    rightIndex = i;//记录右检查点下标
                    isHaveRightTag = true;//记录找到了右检查点
                    //找到第一个右检查点,记录坐标,此时已经完成了左右检查点的检查,左检查点左边到上一个右检查点右边的数据,为想要的数据
                    for (int j = recIndex; j < leftIndex; j++) {
                        end.append(checkCharArray[j]);
                    }
                    //重新设置左起始点
                    recIndex = rightIndex + 1;

                    //重新寻找左检查点
                    isHaveLeftTag = false;
                    isHaveRightTag = false;
                }

            } else {
                //没有找到第一个左检查点
                if (leftChar == ‘<‘) {
                    leftInidexNum++;
                    //找到第一个点,记录位置
                    isHaveLeftTag = true;
                    leftIndex = i;
                }
            }
            //字符已经检索完毕,此时,最后一个点满足左检查点也没用,从上一个记录点采集数据
            if (i == checkCharArray.length - 1) {
                for (int j = recIndex; j < checkCharArray.length; j++) {
                    end.append(checkCharArray[j]);
                }
            }
        }

        //检查出的字符可能包含子检查点,此时递归检查
        String aaaa = end.toString();
        if (aaaa.contains("<") && aaaa.contains(">")) {
            char[] aaa = aaaa.toCharArray();
            check(aaa);
        }
    }

    public static void main(String[] args) {
        char startCharArr[] = startStr.toCharArray();
        check(startCharArr);
        System.out.println(end);
    }
}

 

以上是关于字符串格式化的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?

为 Blogger 上的博客格式化代码片段 [关闭]

java字符串格式转换成日期格式

postman添加断言

SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML

URL 片段中的多个参数