У меня есть следующая строка:
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "2.0.0.0")]
Мне нужно изменить его, чтобы он выглядел следующим образом:
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("myClass", "myVersion")]
Самым простым способом достижения этого, очевидно, является использование Regex
для захвата фрагментов, которые я хочу из этой строки, а затем объединение результатов с моим дополнительным текстом. Однако я пытаюсь использовать метод Regex.Replace()
, чтобы сделать код немного чище:
Regex generatedCodeAttributeRegex = new Regex("\\[[?:global::|]System.CodeDom.Compiler.GeneratedCodeAttribute\\((\"System.Data.Design.TypedDataSetGenerator\",[\\s+]\"2.0.0.0\")\\)\\]");
inputFileContent = generatedCodeAttributeRegex.Replace(inputFileContent, delegate(Match m)
{
return string.Format("\"{0}\", \"{1}\"",
this.GetType(),
Assembly.GetExecutingAssembly().GetName().Version);
});
Насколько я понимаю, это должно заменить захваченную группу текстом, указанным в делегате ... проблема в том, что это не так. Что я делаю неправильно? И возможно ли этого добиться с помощью перегрузки Regex.Replace(string, string)
?