我有一个C#字符串扩展,需要取一个字符串并将所有[变量]替换为[VARIABLES],但我不知道从哪里开始。
Source: Hi [name] how are you [other]?
Result: Hi [NAME] how are you [OTHER]?
这是我的样板:
public static string VariablesToUpperCase(this string input)
{
string pattern = @"\[\w+\]";
string replacement = "??????";
Regex rgx = new Regex(pattern);
return rgx.Replace(input, replacement);
}
答案 0 :(得分:2)
尝试以下方法:
public static string VariablesToUpperCase(this string input)
{
string pattern = @"\[\w+\]";
Regex rgx = new Regex(pattern);
return rgx.Replace(input, (m) => { return m.ToString().ToUpper(); });
}
我改变了你的模式。您需要转义括号,否则您只是匹配单个字符或加号的字符类。
要执行大写,我们使用带有MatchEvaluator的Regex.Replace重载。每次匹配都会调用它,并将其替换为返回值。
答案 1 :(得分:0)
另一种解决方案:
public static string VariablesToUpperCase(this string input)
{
return Regex.Replace(input, @"\[\w+\]", delegate (Match match)
{
string v = match.ToString();
return v.ToUpper();
});
}