3

このコードをコンパイルして実行すると:

class StringTest {
    public static void main(String[] args) {
        System.out.println("Begin Test");

        String letters = "AAAAAAA"
        String[] broken = letters.split("A");
        for(int i = 0; i < broken.length; i++)
            System.out.println("Item " + i + ": " + broken[i]);

        System.out.println("End Test");
    }
}

コンソールへの出力は次のとおりです。

Begin Test
End Test

なぜsplit()このように機能するのか、誰でも説明できますか? ここでこのような他の質問を見ましたが、使用している文字から完全に作成された文字列を分割するときに出力がない理由を完全には理解していませんでしたregex。Java が文字列をこのように処理するのはなぜですか?

4

3 に答える 3

12

String.split末尾の空の文字列を破棄します。たとえば、"foo,bar,,".split(",")は に分割され{"foo", "bar"}ます。表示されているのは、完全にセパレーターで構成される文字列であるため、空の分割はすべて「末尾」であり、破棄されます。

を使用すると、おそらくこれらすべての空の文字列を取得できますletters.split("A", -1)。あるいは、Guava's Splitterは、あなたが要求しない限り、そのようなことはしません: Splitter.on('A').split(letters).

于 2013-04-04T16:22:39.507 に答える
1

これは"A"、分割メソッドで区切り文字として使用され、文字列に区切り文字以外のテキストがない"A"ため、分割後に何も残らないためです (空の文字列は結果の配列に返されません)。

于 2013-04-04T16:23:07.683 に答える