手动执行isEmpty,split,contains和replace

时间:2012-10-27 21:58:32

标签: java regex string replace split

所以我正在研究一个项目,由于某些原因仅限于java squawk 1.4。因此,String类不包含标题中的四种方法。我需要在我的程序中使用这些方法,并得出结论,我必须创建一个Util类,它自己执行这些方法的功能。

首先,它存在于某个地方吗?显然,我的第一反应是调查从String类复制源代码,但这些方法的依赖性对我来说太深了。

其次,我无法复制split(String regex)replace(CharSequence target, CharSequence replacement)的行为。 contains(String)isEmpty()很明显很容易,但我在编写其他代码时遇到了麻烦。

现在,我有split工作(虽然它的工作方式与jdk 7不同,但我不想得到错误)。

public static String[] split(String string, char split) {
    String[] s = new String[0];
    int count = 0;
    for (int x = 0; x < string.length(); x++) {
        if (string.charAt(x) == split) {
            String[] tmp = s;
            s = new String[++count];
            System.arraycopy(tmp, 0, s, 0, tmp.length);
            s[count - 1] = string.substring(x).substring(1);
            if (contains(s[count - 1], split + "")) {
                s[count - 1] = s[count - 1].substring(0, s[count - 1].indexOf(split));
            }
        }
    }
    return s.length == 0 ? new String[]{string} : s;
}

Replace要难得多,而且我已经尝试了好几个小时了。这似乎是谷歌/档案馆从未冒险过的问题。

1 个答案:

答案 0 :(得分:0)

制作方法......

public static boolean isEmpty(String string) {
    return string.length() == 0;
}

public static String[] split(String string, char split) {
    return _split(new String[0], string, split);
}

private static String[] _split(String[] current, String string, char split) {
    if (isEmpty(string)) {
        return current;
    }
    String[] tmp = current;
    current = new String[tmp.length + 1];
    System.arraycopy(tmp, 0, current, 0, tmp.length);
    if (contains(string, split + "")) {
        current[current.length - 1] = string.substring(0, string.indexOf(split));
        string = string.substring(string.indexOf(split) + 1);
    } else {
        current[current.length - 1] = string;
        string = "";
    }
    return _split(current, string, split);
}

public static boolean contains(String string, String contains) {
    return string.indexOf(contains) > -1;
}

public static String replace(String string, char replace, String replacement) {
    String[] s = split(string, replace);

    String tmp = "";
    for (int x = 0; x < s.length; x++) {
        if (contains(s[x], replace + "")) {
            tmp += s[x].substring(1);
        } else {
            tmp += s[x];
        }
    }
    return tmp;
}