使用 c#-regex 替换给定文本中的特定值

本文关键字:文本 替换 使用 c#-regex | 更新日期: 2023-09-27 18:37:08

>我需要使用 c# 替换给定文本中的一些值,最好使用正则表达式

输入 :这是示例文本。我需要将 $100.00 的价值替换为新价值。

输出 :这是示例文本。我需要用新价值替换 $50.00 价值。

需要更换 $100 到 $50

注意:数字应为任意大小

溶液:这符合我的要求

Regex.Replace("这是示例文本。我需要将 $100.00 值替换为新值。"''$''d+(''.''d+)?" , "50", RegexOptions.IgnoreCase)

使用 c#-regex 替换给定文本中的特定值

如果要替换常量值,则不需要正则表达式:

string output = text.Replace("$100", "$50");

如果你事先不知道数字,你可以使用正则表达式,但你需要弄清楚你想要什么模式。下面是一个匹配美元符号的示例,后跟一个或多个数字,然后是小数点,然后是另外两个数字:

string output = Regex.Replace(input, @"'$'d+'.'d{2}", "$50.00");

您需要以下 using 语句才能使上述代码正常工作:

using System.Text.RegularExpressions;

您应该修改正则表达式以满足您的需要。您可能需要考虑需要匹配的所有输入范围:

  • 您需要匹配小数点吗?
  • 您需要匹配逗号吗?
  • 是否需要匹配负值?
  • 您需要匹配"$1M"中的字母吗?
  • 您是否需要匹配货币代码而不是美元符号"10 USD"?
  • 您是否需要匹配"€100"中的其他货币?
  • 等。。。

根据您对这些问题的回答,您需要调整正则表达式。

你应该能够使用它:

RegEx rex = new RegEx("''$''d+''.''d''d");

然后只需使用替换功能。

rex.Replace(input, "$50.00");

如果您需要能够根据匹配的数字确定要动态替换的值,请查看 MatchEvaluator。

这会将任何值替换为可选的十进制值:

Regex.Replace( s, @"'$'d+('.'d+)?", "$50" )