次のようなものを含む可能性のあるUTF8でエンコードされたテキストファイルを解析したいと思います。
int 1
text " some text with \" and \\ "
int list[-45,54, 435 ,-65]
float list [ 4.0, 5.2,-5.2342e+4]
リスト内の数字はコンマで区切られます。ここでは、空白は許可されていますが、数字とコンマや角かっこなどの記号の間にある必要はありません。同様に、単語や記号についても、list[
引用符で囲まれた文字列の読み取りは、Intとfloatの読み取りに役立つと思っていたので、Scannerに単一の文字を強制的に(区切り文字を空のパターンに設定して)実行しましたが、もうわかりません。
スキャナーは常に完全なトークンを取得し、それを照合しようとします。私が必要としているのは、区切り文字を無視して、できるだけ多く(またはできるだけ少なく)一致するようにすることです。
基本的にこの入力の場合
int list[-45,54, 435 ,-65]
電話してこれを手に入れたい
s.nextWord() // int
s.nextWord() // list
s.nextSymbol() // [
s.nextInt() // -45
s.nextSymbol() // ,
s.nextInt() // 54
s.nextSymbol() // ,
s.nextInt() // 435
s.nextSymbol() // ,
s.nextInt() // -65
s.nextSymbol() // ]
等々。
または、doubleや他の型自体を解析できなかった場合、少なくとも正規表現を取得するメソッドは、それに一致する最大の文字列(またはエラー)を返し、一致したものの直後にストリーム位置を設定します。
スキャナーはどういうわけかこれに使用できますか?それとも別のアプローチがありますか?これは非常に一般的なことだと思いますが、適切なツールを見つけることができないようです。