0

私のコードは:-

class SplitString {
    public static void main(String[] args) {
        Pattern p;
        String test = "a1b2c3";
        String[] token1 = test.split("\\d");
        System.out.println("first case : " + token1.length);

        for (String s : token1)
            System.out.print(s + " ");

        String[] token2 = test.split("\\b");
        System.out.println("\n\nsecond case : " + token2.length);

        for (String s : token2)
            System.out.print(s + " ");

        String[] token3 = test.split("\\a");
        System.out.println("\n\nthird case : " + token3.length);

        for (String s : token3)
            System.out.print(s + " ");
    }
}

出力:-

first case : 3
a b c

second case : 2
 a1b2c3

third case : 1
a1b2c3

私はJavaが初めてで、分割を実行しようとしていますが、すべてのケースで答えが異なるため、その概念を理解できませんが、それらの違いは正確には何ですか?

4

5 に答える 5

5

必要なものは Javadoc にあります。指定した文字列をリテラル文字列ではなく、正規表現splitとして解釈します。正規表現構文の詳細については、こちらをご覧ください。

または、Eclipse を使用している場合は、Eclipse の [検索] ダイアログ ボックスを使用して正規表現を試すことができます ([正規表現] チェックボックスをオンにします)。

于 2012-08-01T20:49:33.197 に答える
1

Split は、共通の区切り文字を使用して文字列を文字列の配列に分割します。より一般的な例は、データが次のようにカンマで区切られている場合です。

1,2,3,4,5

次に、コンマ文字でデータを分割すると、["1","2","3","4","5"] の 5 つの文字列の配列になります。

于 2012-08-01T20:50:34.830 に答える
1

最初のケースでは、区切り記号\dは任意の数字を表します。文字列は、数字のグループごとに分割されます。

2 番目のケースで\bは、単語の境界を表します。文字列の先頭がカウントされるため、文字列はそこで分割されます。

3 番目のケースで\aは、文字 BEL (ASCII 7) を表します。文字列にはそのような文字がないため、文字列は分割されません。

式の構文の完全なガイドは、こちらにあります。

于 2012-08-01T20:50:45.973 に答える
1

パターン クラスを参照してください

\d  A digit: [0-9]
\a  The alert (bell) character ('\u0007')
\b  A word boundary

したがって、最初のケース - 分割された数字、2 番目の「単語」、3 番目のすべての文字列 - ベル文字が見つかりません

于 2012-08-01T20:51:41.953 に答える
1

splitご存知かもしれませんが、メソッドは正規表現パターンを使用して文字列を分割します。

  • 最初のケース\dでは、数字を区切り文字として使用して分割します
  • 2 番目のケース\bでは、単語の境界を使用して分割されるため、実際には空の文字列と残り全体が含まれます。
  • 3番目のケース\aは特殊文字で、分割する文字列には存在しないため、トークンは1つだけです

すべての正規表現オプションについては、こちらをご覧ください。

于 2012-08-01T20:51:45.350 に答える