3

|を渡すと、.split()関数に何か奇妙なことに気づきました。それに、文字列を文字に分割します。私はそれをテストしました:

String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
    System.out.println(str);
}

そしてそれを別々の文字に分割します。バックスラッシュしてみましたが、うまくいきませんでした。

誰かが実際にそれを分割する方法を知っていますか| ?

4

3 に答える 3

9

String#split引数として正規表現を取ります。ここで|、特別な意味があり、に使用されalternationます。

あなたはそれから抜け出すために2つの方法を使うことができます:-

  1. エスケープ|Javaでは、ダブルバックスラッシュを使用する必要があることを忘れないでください:-

    s.split("\\|");
    
  2. Characterクラスを使用します:-

    s.split("[|]");
    

文字クラス内-では、真ん中で使用された場合を除いて、特別な意味はありません。だから、それ[|]はただのことであり、他には|何もありません。

そして、はい、 @JanDvorakによるコメントで指定されているよう]文字クラスでエスケープする必要もあります。

于 2013-01-08T21:03:31.290 に答える
2

|は正規表現の世界のメタ文字です。通常の文字として扱うには、バックスラッシュでエスケープする必要があります\\|

public static void main(String...args) throws ParseException{
        String s = "Hiya there | how are you | im fine thanks";
        for(String str : s.split("\\|")) {
            System.out.println(str);
        }
    }
于 2013-01-08T21:03:04.170 に答える
0

新しい要件が発生すると大きくなることが多いため、正規表現の角かっこを常に使用します。角かっこを使用すると、円記号に比べて理解しやすくなります。

public static void main(String...args) throws ParseException{
    String s = "Hiya there | how are you | im fine thanks";
    for(String str : s.split("[|]")) {
        System.out.println(str);
    }
}
于 2013-01-08T21:57:10.280 に答える