使用 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)
如果要替换常量值,则不需要正则表达式:
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" )