递归实现:按固定长度截取字符串

2017-09-05  本文已影响19人  Suremotoo
public class TestSubStr {
    public static void main(String[] args) {
        String str = "123456789";
        int num = 2;
        String[] strs = subStrByNum(str, num);
        for (String s : strs) {
            System.out.println(s);
        }
    }

    /**
     * [subStrByNum 按截取长度截取,返回字符串]
     * @param  str [需截取的字符串]
     * @param  num [按多少长度截取]
     * @return     [截取完的字符串数组]
     */
    public static String[] subStrByNum(String str, int num) {
        StringBuffer result = new StringBuffer();
        String string = subStr(result, str, num);
        return string.split("~");
    }

    /**
     * [subStr 截取字符串的方法]
     * @param  result [用来存放截取处理后的字符串]
     * @param  str    [需截取的字符串]
     * @param  num    [按多少长度截取]
     * @return        [处理后的字符串]
     * @description  该方法用递归实现按固定长度截取字符串
     */
    public static String subStr(StringBuffer result, String str, int num) {
        if (str.length() <= num) {
            result.append(str.substring(0));
        } else {
            String subStr = str.substring(0, num);
            result.append(subStr + "~");
            String surStr = str.substring(num);
            if (surStr.length() > num) {
                subStr(result, surStr, num);
            } else {
                result.append(surStr);
            }
        }
        return result.toString();
    }
}

注意:避免使用特殊符号

上一篇下一篇

猜你喜欢

热点阅读