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

时间:2012-06-14 19:14:27

标签: c# regex

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

输入:这是示例文本。我需要用新值替换$ 100.00值。

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

  

需要更换100美元到50美元

注意:数字应为任意大小

溶液: 这符合我的要求

Regex.Replace(“这是示例文本。我需要用新值替换$ 100.00值。”, “\ $ \ d +(\。\ d +)?” ,“50”,RegexOptions.IgnoreCase)

3 个答案:

答案 0 :(得分:5)

如果您要替换常量值,则无需使用正则表达式:

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欧元”以外的其他货币?
  • 等...

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

答案 1 :(得分:1)

你应该能够使用它:

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

然后只使用替换功能。

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

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

答案 2 :(得分:0)

这将使用可选的十进制值替换任何值:

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