首页 > 解决方案 > C#正则表达式查找所有数字并将它们四舍五入到小数点后两位

问题描述

我正在尝试清理使用 c# 发送的状态电子邮件,该电子邮件包含很多具有最多 8 或 9 位小数的数字。我如何找到所有数字并用它们自己的圆形版本替换它们?

我能想到的第一种方法就是使用 regex 找到它们,然后一个一个地替换它们,但是有没有办法使用 regex.replace 和两个模式来做到这一点?

标签: c#regexnumbers

解决方案


我认为您想使用 MatchEvaluator 参数或 Regex.Replace。它需要一个代表根据每个特定匹配选择您的替代者。像这样的东西:

var data = ""

//Just a sample pattern for decimal numbers
var pattern = @"^[0-9]([.,][0-9]{1,9})?$";

var Matches = Regex.Replace(data, pattern, (m) =>
{
    //double.Parse your m.ToString in here, round it up or down, then convert it back 
    //to a string and return that
});

推荐阅读