2

次のような文字列を分割しようとしています: abc|aa|| 通常の string.split を使用する場合、正規表現を指定する必要があります。次のことを試みました: string.split("|") string.split("\|") string.split("/|") string.split("\Q|\E")

それらのどれも機能しません.....

誰かがそれを機能させる方法を知っていますか?

4

5 に答える 5

2

どのように試したかはわかりませんが、

public static void main(String[] args) {
    String a= "abc|aa||";
    String split = Pattern.quote("|");
    System.out.println(split);
    System.out.println(Arrays.toString(a.split(split)));
}

プリントアウト

\Q|\E
[abc, aa]

効果的に分割し|ます。は\Q ... \E正規表現の引用です。その中にあるものはすべて、リテラル パターンとして一致します。


string.split("\|"); // won't work because \| is not a valid escape sequence
string.split("/|"); // will compile, but split on / and empty space, so between each character
string.split("|");  // will compile, but split on empty space, so between each character

// true alternative to quoted solution above
 string.split("\\|") // escape the second \ which will resolve as an escaped | in the regex pattern
于 2013-09-22T15:55:02.040 に答える
1

バックスラッシュも特殊文字であるため、バックスラッシュを 2 つ使用する必要があります。したがって、エスケープ文字をエスケープする必要があります。つまり \ \|

于 2013-09-22T15:52:14.560 に答える
0

|は特殊文字であるため、スラッシュを使用してエスケープする必要があります。使ってみて

string.split("\\|")

于 2013-09-22T15:55:26.163 に答える
0

|は正規表現の特殊文字であるため、エスケープする必要があります。\|

バックスラッシュ\は Java の特殊文字であるため、エスケープする必要があります。

その結果、目的の効果を得るには、次のことを行う必要があります。

string.split("\\|")
于 2013-09-22T16:02:57.627 に答える
0

次のパターンはすべて問題なく分割できます。"\\Q|\\E" "\\|" "[|]"もちろん、後者の 2 つが望ましいです。

于 2013-09-22T16:32:21.680 に答える