1

区切り文字で「結合」する2つの文字列があるとします。

文字列s1="aaa"、s2 = "bbb"; //入力文字列
文字列s3=s1 + "-" + s2; //文字列をダッシュ​​で結合します

s3.split("-")を取得するために使用できます。さて、ダッシュが含まれている場合はどうなりますか?また、ASCIIの印刷可能な文字が含まれている可能性があり、印刷不可能な文字を区切り文字として使用したくないとします。s1s2s1s2s1s2

この場合、どのような脱出を提案しますか?

4

4 に答える 4

4

フォーマットや区切り文字などを定義できれば、OpenCSVを使用し、デフォルトを使用します。

于 2012-11-30T10:58:01.783 に答える
1

;:;単一の文字の代わりに、区切り記号などの一般的でない文字シーケンスを使用できます。

于 2012-11-30T11:00:25.310 に答える
1

これは、セパレーターを使用しない別の実用的なソリューションですが、爆発した文字列の最後で文字列の長さを結合して、後で再爆発できるようにします。

public static void main(String[] args) throws Exception {
    String imploded = implode("me", "and", "mrs.", "jones");
    System.out.println(imploded);
    String[] exploded = explode(imploded);
    System.out.println(Arrays.asList(exploded));
}

public static String implode(String... strings) {
    StringBuilder concat = new StringBuilder();
    StringBuilder lengths = new StringBuilder();
    int i = 0;
    for (String string : strings) {
        concat.append(string);
        if (i > 0) {
            lengths.append("|");
        }
        lengths.append(string.length());
        i++;
    }
    return concat.toString() + "#" + lengths.toString();
}

public static String[] explode(String string) {
    int last = string.lastIndexOf("#");
    String toExplode = string.substring(0, last);
    String[] lengths = string.substring(last + 1).split("\\|");
    String[] strings = new String[lengths.length];
    int i = 0;
    for (String length : lengths) {
        int l = Integer.valueOf(length);
        strings[i] = toExplode.substring(0, l);
        toExplode = toExplode.substring(l);
        i++;
    }
    return strings;
}

版画:

meandmrs.jones#2|3|4|5
[me, and, mrs., jones]
于 2012-11-30T11:12:18.863 に答える
0

これらの文字列を配列に保存し、ユーザーに表示するたびにダッシュで結合してみませんか?

于 2012-11-30T10:58:44.450 に答える