-1

こんにちは、垂直バーで区切られた文字列を分割しようとしています。例えば:

String str = "a=1|b=2";

Java では、次のようにする必要があります。

 str.split("\\|");

単一のスラッシュを使用する場合:

str.split("\|");

コンパイラはエラーを出します:

無効なエスケープ シーケンス (有効なものは \b \t \n \f \r \" \' \ )

なぜこれが起こるのか誰にも説明できますか?ありがとう!

4

2 に答える 2

5

バックスラッシュ\は特殊文字です。Java の世界では、文字をエスケープするために使用されます。

パイプは、正規表現の世界では「 OR| 」を意味する特殊文字です。

パイプをセパレーターとして使用するには、パイプをエスケープする必要があるため (正規表現の解析中に認識できるようにするため)、正規表現でこれを取得する必要があります: \|.

ただし、バックスラッシュは Java の特殊文字であり、String オブジェクトを使用しているため、最終的に期待される最終結果として解釈できるように、バックスラッシュをエスケープする必要があります。\|

これを行うには、バックスラッシュを別のバックスラッシュでエスケープするだけです:\\|

最初のバックスラッシュは、パイプ (正規表現の要件) をエスケープする 2 番目のバックスラッシュ (Java の要件) をエスケープします。

于 2013-05-30T00:29:58.757 に答える
1

Java 文字列では、バックスラッシュを別のバックスラッシュでエスケープする必要があります。そのため、正規表現の「標準的な」形式は確か\|に ですが、Java 文字列としては と記述する必要があります"\\|"

于 2013-05-30T00:19:55.673 に答える