C#正则匹配(提取字符串中的数字)及C#“四舍五入”

本篇文章介绍一个正则小实例,使用C#语法正则匹配字符串中的数字,提取出来。并介绍一下,C# 数字计算中的“四舍五入”。

C#正则匹配数字

一下是提取字符串中数字(包含小数)的实例代码:

    string str = "优惠6.0万";
    /**  \\d+\\.?\\d*
    * \d 表示数字
    * + 表示前面的数字有一个或多个(至少出现一次)
    * \. 此处需要注意,. 表示任何原子,此处进行转义,表示单纯的 小数点
    * ? 表示0个或1个
    * * 表示0次或者多次
    */
    Regex r = new Regex("\\d+\\.?\\d*");
    bool ismatch = r.IsMatch(str);
    MatchCollection mc = r.Matches(str);

    string result = string.Empty;
    for (int i = 0; i < mc.Count; i++)
    {
        result += mc[i];//匹配结果是完整的数字,此处可以不做拼接的
    }
    Console.WriteLine(result);

// 需要注意的是,将小数点转译,这是容易忽略的

C#“四舍五入”的计算处理

C#保留一位小数,四舍五入

// result = "3.55";
// 使用Math.Round 方法
decimal d = Math.Round(Convert.ToDecimal(result), 1, MidpointRounding.AwayFromZero);
Console.WriteLine(d.ToString());

C# 从字符串中提取数字,“四舍五入”后,替换原数字

string str = "已优惠5.995万";
Regex r = new Regex("\\d+\\.?\\d*");
string result = string.Empty;


if (r.IsMatch(str))
{
    MatchCollection mc = r.Matches(str);
    string temp = mc.Count > 0 ? mc[0].ToString() : "";
    string show = Math.Round(Convert.ToDecimal(temp), 1, MidpointRounding.AwayFromZero).ToString();
    Console.WriteLine(show);
    result = Regex.Replace(str, "\\d+\\.?\\d*",show);
}
else
{
    result = str;
}

Console.WriteLine(result);

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值