我正在尝试替换生成的代码文件的一部分:
public System.Nullable<int> SomeInt { get; set; }
public System.Nullable<bool> SomeBool { get; set; }
public System.Nullable<bool> SomeOtherBool { get; set; }
我想要得到的是:
public int? SomeInt { get; set; }
public bool? SomeBool { get; set; }
public bool? SomeOtherBool { get; set; }
我知道代码是等价的,后者只是语法糖。但无论如何我想要这样做因为它更具可读性。
正则表达式模式很容易编写,
System\.Nullable<.*>
整个事情,像
(?<=System\.Nullable<).*(?=>)
获取内部的原始类型。但我不能为我的生活弄清楚如何使用C#的Regex API来正确实现替换。
答案 0 :(得分:1)
将Regex.Replace
与named capture group一起使用会起作用:
string replaced = Regex.Replace(src, @"System\.Nullable<(?<type>.*)>", "${type}?");