1. ホーム

[解決済み】split("|")でJavaの文字列をパイプ記号で分割する。)

2022-04-14 15:13:08

質問

Javaの公式ドキュメントに記載されています。

文字列 "boo:and:foo" 例えば、これらの式で次のような結果が得られます。 正規表現結果 :

{ "boo", "and", "foo" }"

そして、それは私が必要とする方法で動作しています。しかし、これを実行すると

public static void main(String[] args){
        String test = "A|B|C||D";

        String[] result = test.split("|");

        for(String s : result){
            System.out.println(">"+s+"<");
        }
    }

と表示されます。

><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<

というのは、私の期待とはかけ離れていますね。

>A<
>B<
>C<
><
>D<

なぜこのようなことが起こるのでしょうか?

どうすればいいですか?

必要なもの

test.split("\\|");

split は正規表現を使用し レジェックス | を表すメタキャラクタです。 OR 演算子を使用します。を使用してその文字をエスケープする必要があります。 \ (文字列で書くと "\\" から \ は、String リテラルのメタキャラクタでもあり、別の \ でエスケープします)。

を使用することもできます。

test.split(Pattern.quote("|"));

とし Pattern.quote を表す正規表現のエスケープ版を作成します。 | .