Есть необходимость достраивать строку до "полного вида". Думал сделать это через регулярное выражение.
В тексте находится фрагмент примерно такого вида: 1-1-1-1, нужно его при помощи регулярного выражения хочу выделить найти его, после каждую группу разделенную спецсимволом "-" нужно дополнить другими цифрами.
Например:
"1-1-1-1"
"(?<code>(\d?\d?)-(\d?\d?\d)-(\d)-(\d?\d?\d?\d))"
Данная строка удовлетворяет регулярному выражению и в ней выделяются 5 групп: "code", 1, 2, 3, 4
Нужно как-то на основе регулярного выражения код привести к виду: 01-001-1-0001
Проблема в том, что таких масок может быть несколько, как впрочем и входных значений: 11-2-3-44
должно стать: 11-002-3-0044
Думал может можно как-то узнать, какая часть регулярного выражения сработала на какой фрагмент текста и данный фрагмент на основе синтаксиса регулярного выражения достроить?
Или вообще не в ту сторону смотрю и нужно как-то по другому это все делать?
Дополнение:
Регулярные выражения это мое решение выдернуть фрагмент из текста.
Допустим текст содержит следующие символы:
"1-1-1-1 ололо 12-34-222-1 олололо 12.23-34.5"
Для выдёргивания нужных фрагментов реализованы несколько масок:
"\d{1,2}-\d{1,3}-\d-\d{1,4}"
"\d{1,2}-\d{1,2}-\d{1,4}-\d"
"\d{1,2}\.\d{1,2}-\d{1,2}\.\d{1,5}"
Прогоняя текст последовательно по данным маскам, мне нужно заменить выдернутые фрагменты на следующие, достраивая группы ведущими нулями:
"01-001-1-0004 ололо 12-34-0222-1 олололо 12.23-34.00005"
Воспользуйтесь перегрузкой Regex.Replace
, принимающей MatchEvaluator
:
string pattern = @"(\d{1,2})-(\d{1,3})-(\d)-(\d{1,4})";
string s = @"1-1-1-1 olololo 2-3-4-5";
string r = Regex.Replace(s, pattern,
m => $"{m.Groups[1].Value.PadLeft(2, '0')}-{m.Groups[2].Value.PadLeft(3, '0')}-{m.Groups[3].Value.PadLeft(1, '0')}-{m.Groups[4].Value.PadLeft(4, '0')}");
Console.WriteLine(r);
Выведет:
01-001-1-0001 olololo 02-003-4-0005
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Как программно изменить title другого xaml окна? Из xaml страницы? Пробовал так - MainMenuTitle = "new title";(MainMenu объявил), но выбивает ошибку -
В Json встречаются такие тексты \u0432\u043b\u0435, есть ли какой нибудь online парсер Json, который бы декодировал такой текст ?
Не ожидал наткнуться на проблему в таком вопросе и тем не менееВот мое представление :