1

次のプログラムを作成して、文字列から文字を分離し、配列に割り当てています。

public class Str {
    public static void main(String[] args) {
        String str = "hello";
        String[] chars = str.split("");
        for (int i = 0; i < chars.length; i++) {
            System.out.println(i + ":" + chars[i]);
        }
    }
}

私が得ている出力は次のとおりです。

0:
1:h
2:e
3:l
4:l
5:o

配列の最初の要素として空の文字列を取得しています。出力に空の文字列がなく、chars 配列の長さが 6 ではなく 5 になることを期待していました。この文字列を分割した後に空の文字が来るのはなぜですか?

4

3 に答える 3

7

メソッドを使用できますString#toCharArray()

String str = "hello";
char[] arr = str.toCharArray();

あなたの質問に関しては、空の文字列で分割すると、最初の要素が空の文字列として取得されます。これは、文字列が空の文字列で始まり、すべての文字の後にも空の文字列があるためです。

したがって、最初の分割は最初の文字の前に発生します。

 h e l l o
^ ^ ^ ^ ^ ^
"Split location"

ドキュメントで指定されているように、末尾の空の文字列は破棄されます。

したがって、後続の空の文字列は、結果の配列には含まれません。

于 2013-07-01T19:02:34.683 に答える
4

クラスのtoCharArray()メソッドを試しましたか。String

Stringこれで を分割する際の問題は、文字列の最初の文字""""一致するため、空の文字が得られることです。

この主張を検証するため。あなたは試すことができstr.indexOf("")ます。これにより、値 0 が返されます。ドキュメントによると、引数が部分文字列として発生しない場合、-1 が返されます

于 2013-07-01T19:04:24.170 に答える