利用StringBuffer向字符串特定的重复子字符串插入数据

public class InsertDetail {

    public void insertInvoiceDetail(StringBuffer sb, String Label, String InsertValue) {
        // 查找目标元素的起始位置
        int index = 0;
        while (true) {
            // 起始位置的值小于或者最后一个相同标签的索引值时,将指定的数据InsertValue插入到该标签的当前位置
            if (index < sb.lastIndexOf(Label) || index == sb.lastIndexOf(Label)) {
                sb.insert(sb.indexOf(Label, index), InsertValue);
                // 查找目标元素的起始位置从前一个相同元素的当前位置算起
                index = 1 + sb.indexOf(Label, index);
                continue;
            } else {
                break;
            }
        }

    }

    // 此方法是为了专门插入统编代码的,在第一个统编代码的位置不插入任何东西
    public void insertCode(StringBuffer sb, String Label, String InsertValue) {
        // 查找目标元素的起始位置
        int index = 0;
        while (true) {
            // 起始位置的值小于或者最后一个相同标签的索引值时,将指定的数据InsertValue插入到该标签的当前位置
            if (index < sb.lastIndexOf(Label) || index == sb.lastIndexOf(Label)) {
                // 当找到第一个统编代码时,插入空
                if (index == 0) {
                    sb.insert(sb.indexOf(Label, index), "");
                    // 查找元素的起始位置从从前一个相同元素的当前位置算起
                    index = 1 + sb.indexOf(Label, index);
                    continue;
                } else {
                    sb.insert(sb.indexOf(Label, index), InsertValue);
                    // 查找目标元素的起始位置从前一个相同元素的当前位置算起
                    index = 1 + sb.indexOf(Label, index);
                    continue;
                }
            } else {
                break;
            }
        }

    }

}

原文地址:https://www.cnblogs.com/zw520ly/p/6030186.html