Используйте регулярные выражения для анализа текста. Используя эти правила при создании совпадения текста.
- Любое последовательное число
- Любой последовательный текст
- Отдельный разделитель, такой как
+
или -
или =
. Это набор в регулярном выражении - Игнорировать любые пробелы.
Результат от Regex.Matches
является выводом токена:
Код
var input = "x += 10";
var pattern = @"(\w+|[-=+])";
Regex.Matches(input, pattern)
.OfType<Match>()
.Select(mt => mt.Value);
Альтернативный с Regex Split
Если кто-то использует Regex.Split
с тем же шаблоном, он разбивается на все, как мы указали выше, но также помещает , добавляет в пробелы из-за его дизайна.
Но чтобы компенсировать это добавлением вызова расширения linq в результирующий список, мы можем удалить пробелы и получить тот же ответ.
Regex.Split(input, @"(\w+|[-=+])")
.Where(str => !string.IsNullOrWhiteSpace(str))
результат { "x", "+", "=", "10" }