Я бы хотел проанализировать отформатированные базовые значения и несколько пользовательских строк из TextReader
- по существу, как scanf
позволяет.
- Мой ввод может не иметь разрывов строк, поэтому ReadLine + Regex не вариант. Я мог бы использовать какой-то другой способ ввода текста; но проблема в том, что я не знаю разделитель во время компиляции (так что это сложно), и что этот разделитель может зависеть от локализации. Например, число с плавающей запятой, за которым следует запятая, может быть «1,5» или «1,5», но в обоих случаях попытка разобрать число с плавающей точкой должна быть «жадной».
- Чтобы быть в безопасности, я хотел бы предположить, что мой ввод активно враждебен (скажем, потоковая передача из сетевого потока): т. Е. Преднамеренно отсутствует разделитель чанков.
- Я бы хотел избежать пользовательских Regex: int.Parse и double.Parse работают хорошо и учитывают локализацию. Не начинайте меня с DateTime - мне все равно может понадобиться несколько пользовательских шаблонов, но написание регулярных выражений для освещения этого сценария не выглядит забавным.
Для конкретного примера, скажем, у меня есть TextReader
, и я знаю, что следующим значением должно быть double
- как я могу извлечь это двойное и, возможно, ограниченное количество просмотров, не читая весь поток и без вручную писать локализуемый двойной парсер?
Похожие вопросы
Есть предыдущий вопрос " Ищите эквивалент C # scanf
", который звучит похоже, но Q + A фокусируется на readline + regex (которого я хотел бы избежать). Как я могу использовать Regex против TextReader? не нашел ответа (кроме фрагментирования), и в любом случае я бы хотел избежать написания своих собственных регулярных выражений.