繁体   English   中英

如何在C#.net中使用正则表达式替换组值

[英]how to replace group value using regex in c# .net

我有一个像

string s= "I WAS born in AMERICA on december 1978.";

现在我想使用正则表达式将12 转换为12月

我在下面使用了不完整的正则表达式

s=Regex.Replace(s,(january|february|march|April|may|june|july|august|september|October|november|December),CultreInfo.InvariantCulture.TextInfo.ToTitleCase(?????),RegexOption.IgnoreCase);

我必须在这里写什么(?????),这样我才能得到以下输出

s= "I WAS born in AMERICA on December 1978.";

我还有其他方法可以申请吗?

查看regex.replace文档,我注意到您必须使用回调函数。

所以写一个函数:

function CustomReplace( Match m ) {
    return CultreInfo.InvariantCulture.TextInfo.ToTitleCase(m.Groups[1].Value)
}

并将其作为第三个参数传递:

s = Regex.Replace(
    s,
    "(january|february|march|April|may|june|july|august|september|October|november|December)",
    CustomReplace,
    RegexOption.IgnoreCase
);

使用命名的捕获和内联MatchEvaluator

string s = "I WAS born in AMERICA on december 1978.";
s = Regex.Replace(
    s,
    "(?<months>january|february|march|April|may|june|july|august|september|October|november|December)",
    new MatchEvaluator(
        match => CultureInfo
                .InvariantCulture
                .TextInfo
                .ToTitleCase(match.Groups["months"].Value)
    ),
    RegexOptions.IgnoreCase
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM