26

Javaでは、文字を分割しようとして^いますが、認識できません。エスケープ\^するとコードエラーがスローされます。

これは特殊文字ですか、それとも認識させるために何か他のことをする必要がありますか?

String splitChr = "^";
String[] fmgStrng = aryToSplit.split(splitChr); 
4

5 に答える 5

55

これ^はJava正規表現の特殊文字であり、入力の「先頭に一致する」ことを意味します。

でエスケープする必要があります"\\^"。をエスケープするには、ダブルスラッシュが必要です。そうしないと、Javaのコンパイラは、改行の場合と同様に、文字列で\特別なシーケンスを使用しようとしていると見なします。\^\n

\^ただし、これは特別なエスケープシーケンスではないため、コンパイラエラーが発生します。

つまり、を使用します"\\^"

于 2012-05-22T02:45:58.817 に答える
0

上記の答えはどれも意味がありません。これが正しい説明です。

  1. ご存知のとおり、Java文字列で^をエスケープする必要はありません。
  2. ^はRegulalExpressionの特別な文字であるため、\^を渡す必要があります。
  3. Javaで文字列\^を作成するにはどうすればよいですか?このような String splitstr = "\\^";
于 2013-02-27T18:57:06.853 に答える
0

^は文字列の先頭に一致します。エスケープする必要がありますが、この場合、正規表現パーサーがエスケープをエスケープすることを意味することを理解できるように、エスケープする必要があります。

String splitChr = "\\^";
...

あなたが望むものを手に入れるべきです。

于 2012-05-22T02:45:41.173 に答える
0

String.split()正規表現を受け入れます。記号は、入力シーケンスの^開始を示す特別な記号です。それを機能させるには、それをエスケープする必要があります。あなたはそれをエスケープしようとしていまし\たが、Java文字列で物事をエスケープするのは特殊文字なので、別の。でエスケープ文字をエスケープする必要があります\。それはあなたに与えるでしょう:

\\^
于 2012-05-22T02:46:01.857 に答える
0

を使用します"\\^"。この例をガイドとして使用してください。

    String aryToSplit = "word1^word2";
    String splitChr = "\\^";
    String[] fmgStrng = aryToSplit.split(splitChr); 
    System.out.println(fmgStrng[0]+","+fmgStrng[1]);

「word1、word2」を出力し、。を使用して文字列を効果的に分割する必要があります"\\^"。最初のスラッシュは、2番目のスラッシュをエスケープするために使用されます。二重スラッシュがない場合、Javaは^が改行のようにエスケープ文字であると見なします。"\n"

于 2012-05-22T02:47:07.490 に答える