TextReader
フォーマットされた基本値といくつかのカスタム文字列を-基本的にallowsのように解析したいと思いscanf
ます。
- 私の入力には改行がない可能性があるため、ReadLine+Regexはオプションではありません。テキスト入力をチャンク化する他の方法を使用できます。しかし、問題は、コンパイル時に区切り文字がわからないこと(つまり、注意が必要です)と、その区切り文字がローカリゼーションに依存している可能性があることです。たとえば、floatの後にコンマが続く場合は「1.5」または「1,5」になりますが、どちらの場合も、floatを解析しようとすると「貪欲」になります。
- 安全のために、私の入力は積極的に敵対的であると仮定したいと思います(たとえば、ネットワークストリームからのストリーミング)。つまり、チャンク区切り文字が意図的に欠落しています。
- カスタム正規表現を避けたい:int.Parseとdouble.Parseはうまく機能し、ローカリゼーションに対応しています。DateTimeを使い始めないでください-とにかくいくつかのカスタムパターンが必要かもしれませんが、そのシナリオをカバーするために正規表現を書くのは面白そうに聞こえません。
具体的な例として、私がaを持っていTextReader
て、次の値が-であることを知っているとしましょうdouble
-ストリーム全体を読み取ったり、ローカライズ可能なダブルパーサーを手動で書き込んだりせずに、その二重の、場合によっては限られた量の先読みを抽出するにはどうすればよいですか?
同様の質問
以前の質問「C#に相当するものを探してscanf
います」は似ているように聞こえますが、Q +Aはreadline+regexに焦点を当てています(これは避けたいです)。TextReaderに対してRegexを使用するにはどうすればよいですか?(チャンクを超えて)答えが見つかりませんでした。いずれにせよ、自分の正規表現を作成することは避けたいと思います。