2017-11-07 47 views
-4

文字エスケープにはバックスラッシュが使用されていることがわかっていますので、2つを使用して1つのバックスラッシュを記述する必要があります。Java:単一のバックスラッシュ文字列 - "\"はなぜ違法ですか?

しかし、なぜこれはコンパイルされませんか?

"\\" =>は

をコンパイルしませんが、この:

"\\\\" => "\"

どの\エスケープ何ですか?

ありがとうございます!

+2

'String r =" \\ ";'はうまくコンパイルされます。実際に '' \\\\ "=>はコンパイルされていない(これも間違っています)と言ったので、ここでエスケープの問題を避けるために、あなたの質問を正しくフォーマットしてください。 – Tom

+0

これは当てはまりません。完全なコードと(潜在的な)エラーメッセージを入れよう –

+4

JavaのString.replaceAll()が実際に "\"を置き換えるのに正規表現で4つのスラッシュ "\\\\"を必要とする理由[https://stackoverflow.com/質問/ 18875852/why-string-replace-in-java-requires-4-slashes-in-regexから実際のrまで) – Tom

答えて

0

これはコンテキストによって異なります。一部のStringメソッドは通常の文字列を使用せず、正規表現を使用します。正規表現では、\もエスケープ文字ですので、平文\に対応する正規表現を使用するには、"\\\\"と記述する必要があります。

+0

前提があまりにも遠すぎます。問題の何もそのようなシナリオを示唆するものはありません –

+1

"\\" =>はコンパイルされません。 – kaos

+1

私が間違っていると私を訂正しますが、コンパイルすると、実行時にその正規表現を解析するときに例外がスローされますが、コンパイルされます。 – AxelH

関連する問題