Я хочу использовать регулярное выражение так же, как string.Format. ПояснюЗаменить именованную группу в регулярном выражении со значением
у меня есть:
string pattern = "^(?<PREFIX>abc_)(?<ID>[0-9])+(?<POSTFIX>_def)$";
string input = "abc_123_def";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
string replacement = "456";
Console.WriteLine(regex.Replace(input, string.Format("${{PREFIX}}{0}${{POSTFIX}}", replacement)));
Это работает, но я должен предоставить "вход" в regex.Replace. Мне этого не надо. Я хочу использовать шаблон для сопоставления, но также и для создания строк так же, как со строковым форматом, заменив именованную группу «ID» на значение. Это возможно?
Я ищу что-то вроде:
string pattern = "^(?<PREFIX>abc_)(?<ID>[0-9])+(?<POSTFIX>_def)$";
string result = ReplaceWithFormat(pattern, "ID", 999);
Результат будет содержать "abc_999_def". Как это сделать?
Это не совсем то, что вы ищете, но может иметь значение. Это, как правило, именованная строка.вместо индексации. http://haacked.com/archive/2009/01/04/fun-with-named-formats-string-parsing-and-edge-cases.aspx – chilltemp