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

使用c#-regex替换给定文本中的特定值,c#,regex,C#,Regex,我需要使用c#替换给定文本中的一些值,最好使用正则表达式 输入:这是示例文本。我需要用新值替换$100.00的值 输出:这是示例文本。我需要用新的值替换50.00美元的值 需要更换$100到$50 注:数字应为任意大小 解决方案: 这符合我的要求 Regex.Replace(“这是示例文本。我需要用新值替换$100.00值。”, “\$\d+(\.\d+)”,“50”,RegexOptions.IgnoreCase)如果要替换常量值,则不需要正则表达式: string output = text

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

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

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

需要更换$100到$50

注:数字应为任意大小

解决方案: 这符合我的要求

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

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

string output = text.Replace("$100", "$50");
如果你事先不知道数字,你可以使用正则表达式,但你需要弄清楚你想要什么样的模式。下面是一个匹配美元符号后跟一个或多个数字、一个小数点和两个以上数字的示例:

string output = Regex.Replace(input, @"\$\d+\.\d{2}", "$50.00");
您需要使用此
语句才能使上述代码正常工作:

using System.Text.RegularExpressions;
您应该修改正则表达式以满足您的需要。您可能需要考虑需要匹配的全部输入:

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

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

您应该能够使用以下方法:

RegEx rex = new RegEx("\\$\\d+\\.\\d\\d");
然后使用replace函数

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

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

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

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

无论大小,它都应该被“$50”替换?我不知道文本中间的值。。它应该是任意的value@PrakashM:您知道它只由数字组成吗?你的正则表达式不包括圆点和昏迷,我想他需要这样的东西-(\$[\d\,]+)@SergeyRybalkin:负数呢?你的表情不能处理这个问题。(我的也一样,但我不会假装我能猜到OP想要什么)。@MarkByers但他的例子中确实包含一个点:-)
$100.00