join

今日はsplitの反対。
なぜにコアAPIにないのかと大勢の人が思っているであろう機能。
配列を結合して一つの文字列にする。

public static String join(String[] tokens, char delimiter, char quote, boolean allQuote) {
    if (tokens == null) {
        return "";
    }
    StringBuffer ret = new StringBuffer();
    for (int i = 0; i < tokens.length; i++) {
        if (i > 0) {
            ret.append(delimiter);
        }
        ret.append(appendQuote(tokens[i], delimiter, quote, allQuote));
    }
    return ret.toString();
}

public static String appendQuote(String text, char delimiter, char quote, boolean all) {
    if (all || indexAny(text, new char[] {delimiter, quote, '\r', '\n'}) >= 0) {
        text = text.replaceAll("\\" + quote, "$0$0");
        text = quote + text + quote;
    }
    return text;
}

public static int indexAny(String text, char[] ca) {
    int ret = -1;
    if (text == null || ca == null) {
        return ret;
    }
    for (int i = 0; i < ca.length; i++) {
        int tmp = text.indexOf(ca[i]);
        ret = ret == -1 ? tmp : (tmp == -1 ? ret : Math.min(ret, tmp));
    }
    return ret;
}