当前位置:  开发笔记 > 编程语言 > 正文

C#中的正则表达式大写替换

如何解决《C#中的正则表达式大写替换》经验,为你挑选了1个好方法。

我有以下C#,它只是将看起来像EQUIP:19d005的输入字符串部分替换为URL,如下所示:

input = Regex.Replace(input, @"(EQUIP:)(\S+)", @"$1$2", RegexOptions.IgnoreCase);

HTML最终看起来像这样.

EQUIP:19d005

唯一的麻烦是目标页面要求eqnum查询字符串全部为大写,因此它在eqnum = 19D005时返回正确的设备,但如果收到eqnum = 19d005则失败.

我想我可以修改和纠正EquipmentDisplay.asp对大写值的错误要求,但是,如果可能的话,我想通过在上面的Regex.Replace语句中大写$ 2来使C#代码符合现有的经典ASP页面.

理想情况下,我希望返回的HTML看起来像这样:

EQUIP:19d005

请注意,虽然原始字符串是EQUIP:19d005(小写),但只有eqnum =值是大写的.

它可以做到,如果是这样,最干净的方法是什么?



1> Duncan..:

好的,2个解决方案,一个内联:

input = Regex.Replace(input, @"(EQUIP:)(\S+)", m => string.Format(@"{0}{1}", m.Groups[1].Value, m.Groups[2].Value, m.Groups[2].Value.ToUpper()), RegexOptions.IgnoreCase);

另一个使用单独的功能:

var input = Regex.Replace(input, @"(EQUIP:)(\S+)", Evaluator, RegexOptions.IgnoreCase);

private static string Evaluator(Match match)
{
    return string.Format(@"{0}{1}", match.Groups[1].Value, match.Groups[2].Value, match.Groups[2].Value.ToUpper());
}

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有