实现Split功能

好吧。。我承认我当时准备不够充分。。所以咯。在这里记录下来吧。。。

首先我们看一下Java提供Split函数是怎么用的,

Here is the syntax of this method:

public String[] split(String regex, int limit)

or

public String[] split(String regex)

Parameters:

Here is the detail of parameters:

  • regex — the delimiting regular expression.

  • limit — the result threshold which means how many strings to be returned.

Return Value:

  • It returns the array of strings computed by splitting this string around matches of the given regular expression.

 如果说,regex只是单一的符号当然容易解决了,那么考虑一下,这个符号不是单一的呢,而是char[]呢。

我们从字符匹配中借鉴思想来完成。

我们有两个字符串。

用BF的方式匹配,如果完全匹配成功则清空StringBuffer并将其放进一个ArrayList里面,否则一直匹配。

代码如下

 

public static String[] split(String str, String tag) {
        char[] strs = str.toCharArray();
        char[] tags = tag.toCharArray();
        List returnList = new ArrayList();
        StringBuffer buff = new StringBuffer();
        int i, j = 0;
        for (i = 0; i < strs.length - 1; ) {
            while (j < tags.length && i < strs.length) {
                if (strs[i] != tags[j]) j = 0;
                if (strs[i] == tags[j]) j++;

                buff.append(strs[i]);
                i++;
            }
            returnList.add(buff.substring(0, buff.length() - j));
            buff = new StringBuffer();
            j = 0;
        }
        String[] tm = {};
        return returnList.toArray(tm);
    }