パイプによる文字列の分割に使用される Java の Split() メソッド記号 (「|」) を使用すると、次のように予期しない結果が生じる可能性があります。例:
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<
なぜこれが起こるのですか?
問題は、split() メソッドの構文にあります。パイプ記号「|」は正規表現で特別な意味を持ち、「OR」演算子を表します。パイプ記号を文字通り区切り文字として使用するには、バックスラッシュ () を使用してエスケープする必要があります。
コードを修正するには、次の方法を使用できます。
// Option 1: Escaping the pipe symbol String[] result = test.split("\|");
// Option 2: Utilizing Pattern.quote() import java.util.regex.Pattern; String[] result = test.split(Pattern.quote("|"));
パイプ記号をエスケープすると、正規表現におけるその特別なステータスが抑制され、リテラルの区切り文字として解釈できるようになります。
以上が文字列を「|」で分割するときに Java の `split()` メソッドが失敗するのはなぜですかどうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。