Je souhaite utiliser l'expression régulière de la même manière que la chaîne.Format. Je vais vous expliquerRemplacer le groupe nommé dans la regex par la valeur
J'ai:
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)));
Cela fonctionne, mais je dois fournir "entrée" à Regex.Replace. Je ne veux pas ça. Je veux utiliser un motif pour faire correspondre mais aussi pour créer des chaînes de la même manière qu'avec un format de chaîne, en remplaçant le groupe nommé "ID" par une valeur. Est-ce possible?
Je cherche quelque chose comme:
string pattern = "^(?<PREFIX>abc_)(?<ID>[0-9])+(?<POSTFIX>_def)$";
string result = ReplaceWithFormat(pattern, "ID", 999);
Résultat contiendra "abc_999_def". Comment accomplir cela?
Ce n'est pas exactement ce que vous cherchez, mais peut être utile. C'est fondamentalement une chaîne nommée.format, au lieu d'indexé. http://haacked.com/archive/2009/01/04/fun-with-named-formats-string-parsing-and-edge-cases.aspx – chilltemp