В классе FieldsParserTask реализуйте метод ParseLine, для которого вы создавали тесты в предыдущей задаче.
Создайте модульные тесты на это решение и перенесите разработанные в прошлой задаче тестовые случаи в модульные тесты.
При вычленении из строки фрагментов приходится отслеживать 2 вещи:
- Проинтерпретированное значение, соответствующее фрагменту. Например, значение фрагмента
"a\tb"
это три символа:a
, символ табуляции иb
, хотя сам фрагмент имеет длину 6 символов. - Позицию фрагмента в строке.
Для этого удобно завести свой тип и хранить там эту информацию. Этот тип уже создан для вас — найдите в проекте класс Token
и используйте его. Фрагменты, выделяемые из текста часто называют токенами или лексемами. Мы дальше будем называть их токенами.
Иллюстрация поясняющая семантику свойств класса Token для при анализе текста:
- Position — номер символа в строке, с которого начинается запись токена.
- Length — количество символов, которое занимает токен в строке.
- Value — это проинтерпретированное значение токена. То есть «очищенное» от ненужных кавычек и слэшей.
Решение получится более простым, если ваши вспомогательные методы будут использовать этот класс в качестве возвращаемого значения. В частности, обратите внимание на метод GetIndexNextToToken
в классе Token
. Он возвращает позицию, с которой нужно продолжить анализ строки.
В качестве вспомогательных методов могут быть методы, читающие разные виды полей, а также метод пропускающий пробелы между полями.
1 2 3 |
using System.Collections.Generic; namespace TableParser { |
Стоимость решения этой задачи всего 100 рублей, купи решения у меня 🙂