使用RegEx到大写[变量]

时间:2015-08-04 03:22:05

标签: c# regex

我有一个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);
    }

2 个答案:

答案 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();
        });
    }