2

& = ~ ^メソッドを使用して、次の区切り文字のセット(アンパサンド、イコール、チルダ、カレット)でJavaスキャナーを使用しようとしていますuseDelimiter("&|=|~|^");

無視されるものを除いて、すべての区切り文字は問題なく機能^します。それはなぜですか。

スキャナーのドキュメントで理由がわかりません。

4

3 に答える 3

3

^次のように、エスケープする必要がありますuseDelimiter("&|=|~|\\^")。これ^は、が正規表現のメタ文字であり、のStringパラメータがuseDelimiter()正規表現にコンパイルされるためPatternです。

同様に、このように区切り文字を書くことができます。この場合、^:をエスケープする必要はありません。useDelimiter("[&=~^]")

于 2012-04-08T20:27:02.550 に答える
2

^は正規表現の予約記号であるため、エスケープする必要があります\\^

于 2012-04-08T20:27:06.730 に答える
1

交互に使用する代わりに、文字クラスを使用できます。

"[&=~^]"

キャラクタークラス内では特別ではないので^(最初を除いて)、エスケープする必要はありません。

于 2012-04-08T20:28:07.387 に答える