我想从TextReader
- 基本上解析格式化的基本值和一些自定义字符串scanf
。
- 我的输入可能没有换行符,所以 ReadLine+Regex 不是一个选项。我可以使用其他方式来分块文本输入;但问题是我在编译时不知道分隔符(所以这很棘手),并且该分隔符可能与本地化有关。例如,后跟逗号的浮点数可能是“1.5”或“1,5”,但在这两种情况下,尝试解析浮点数都应该是“贪婪的”。
- 为了安全起见,我想假设我的输入是积极敌对的(例如,从网络流中流入):即故意缺少分块分隔符。
- 我想避免使用自定义正则表达式:int.Parse 和 double.Parse 效果很好,并且具有本地化意识。不要让我开始使用 DateTime ——无论如何,我可能需要一些自定义模式,但是编写正则表达式来涵盖这种情况听起来并不有趣。
举一个具体的例子,假设我有 aTextReader
并且我知道下一个值应该是 a double
- 如何在不读取整个流并且不手动编写可本地化的双解析器的情况下提取该双精度和可能有限数量的前瞻?
类似问题
以前有一个问题“寻找 C# 等价物scanf
”,这听起来很相似,但 Q+A 侧重于 readline+regex(我想避免)。如何对 TextReader 使用 Regex?没有找到答案(除了分块),无论如何我都想避免编写自己的正则表达式。