2

そのため、特定の理由で Java squawk 1.4 に限定されているプロジェクトに取り組んでいます。このため、Stringクラスにはタイトルの 4 つのメソッドが含まれていません。私のプログラムにはこれらのメソッドが必要であり、これらのメソッドの機能を単独で実行する 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するのははるかに難しく、私は何時間も試みてきました。これは、Google /アーカイブが冒険したことのない質問のようです。

4

1 に答える 1

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;
}
于 2012-10-28T03:46:02.273 に答える