使用正则表达式将前3个字符设为大写

时间:2017-02-23 15:27:06

标签: c# regex

考虑以下帮助方法

public static string ToSentenceCase(this string str)
{
   return Regex.Replace(str, "[a-z][A-Z]", m => m.Value[0] + " " + char.ToLower(m.Value[1]));
}

现在被称为:

static void Main(string[] args)
{
   string a = "HelloWorld";
   Console.WriteLine(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(a.ToSentenceCase()));
}

这将输出 Hello World ,效果很好。

使用此方法我尝试将3个第一个字符更改为大写,如果它们以字符串 RMA 开头。是否有办法使用正则表达式来实现这一点,或者我必须创建另一个方法并在我从ToSentenceCase()返回字符串后调用它?

所以如果我有一个字符串 rmainfo 我想要 RMA信息

2 个答案:

答案 0 :(得分:1)

您可以使用:

public static string ToSentenceCase(this string str)
{
    var temp = Regex.Replace(str, "[a-z][A-Z]", m => m.Value[0] + " " + char.ToLower(m.Value[1]));

    return Regex.Replace(temp, "^rma.", m => m.Value.Substring(0, 3).ToUpper() + " " + char.ToUpper(m.Value[3]), RegexOptions.IgnoreCase);
}

答案 1 :(得分:0)

如果你坚持使用正则表达式,这可能有效:

var str = "rmaHelloWorld";
var str1 = Regex.Replace(str, "[a-z][A-Z]", m => m.Value[0] + " " + char.ToLower(m.Value[1]));
var str2 = Regex.Replace(str1, "^rma", m => m.Value.ToUpper());
Console.WriteLine(str2);