-1

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

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

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

需要更换 $100 到 $50

注意:数字应该是任意大小

解决方案:这适用于我的要求

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

4

3 回答 3

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 欧元”?
  • ETC...

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

于 2012-06-14T19:16:23.810 回答
1

你应该可以使用这个:

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

然后只需使用替换功能。

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

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

于 2012-06-14T19:17:13.763 回答
0

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

Regex.Replace( s, @"\$\d+(\.\d+)?", "$50" )
于 2012-06-14T19:19:28.520 回答