2011-01-13 9 views
2

こんにちは皆さん、 この質問は私には本当に愚かなようですが、私の人生はどこでも答えを見つけることができません。私がしようとしているのは、アスタリスク(*)で区切られた文字列をスキャンすることです。しかし、foo.useDelimiter( "*")を試してみると、Javaはアスタリスクをワイルドカードとして解釈し、すべての文字を区切り文字として使用します...これは明らかに私が望むものではありません。 エスケープ文字としてバックスラッシュを使用しようとしましたが、コンパイラエラー "不正なエスケープ文字"が表示されます。アスタリスク文字をJavaスキャナのデリミタとして使用

これはおそらく非常に簡単ですが、もう一度、私は答えを見つける場所が分かりません!

ありがとうございます! Java文字列で

ライナス

答えて

6

は、あなたは、このように*脱出、解釈される実際の文字列があるので、* \ \\二重のバックスラッシュを使用します。

基本的に、エスケープ文字をエスケープする必要があります。

+0

ああ、ありがとうございます!私は馬鹿馬鹿しいように感じます... – Linus

4

スキャナは他の正規表現操作と同じパターンクラスを使用するため、2つのバックスラッシュでそのトリックを行う必要があります。

(。一つのバックスラッシュは唯一の定数文字列内の次の文字をエスケープ、あなたは実際の文字列で1を得るためにそれらのうちの2つを必要とする)

2

別の方法としては、次のとおりです。

Scanner in = ...; 
in.useDelimiter("[*]"); 

カッコ内のすべて区切り文字として使用する文字です。

+0

文字クラス自体にエスケープが必要な他のメタ文字が含まれている可能性があることに注意してください。 –

+0

@bart trueですが、アスタリスクはその1つではありません:) –

+0

もちろん、あなたは正しいです。私のコメントは、OPへのより慎重な発言でした。 :) –

関連する問題