You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中如何统计带后缀的数值字符串的小数位数?

解决带后缀数值字符串的小数位数统计问题

原方案的问题

  1. 正则[^0-9.,]+无法过滤Mio.这类后缀中的点,导致无关符号残留,干扰小数位判断
  2. 直接将所有点替换为逗号的逻辑错误,未区分千分位分隔符和小数分隔符,无法适配不同地区的数值格式

优化方案:精准提取数值部分后统计小数位

通过正则匹配开头的合法数值结构(支持千分位分隔符),完全排除后缀干扰,再识别小数分隔符统计位数:

using System.Text.RegularExpressions;

public int CountDecimals(string input)
{
    // 匹配开头的合法数值:支持带千分位的整数/小数,兼容点/逗号分隔符
    string pattern = @"^\s*(\d{1,3}(?:[.,]\d{3})*(?:[.,]\d+)?|\d+(?:[.,]\d+)?)";
    Match match = Regex.Match(input, pattern);

    if (!match.Success)
        return 0;

    string numericPart = match.Groups[1].Value;
    int lastDotPos = numericPart.LastIndexOf('.');
    int lastCommaPos = numericPart.LastIndexOf(',');
    int decimalSepPos = Math.Max(lastDotPos, lastCommaPos);

    if (decimalSepPos == -1)
        return 0;

    // 提取小数部分并返回长度
    return numericPart.Substring(decimalSepPos + 1).Length;
}

方案说明

  • 正则精准匹配数值前缀,完全过滤%、€、Mio.、million等后缀,包括后缀中的点
  • 自动识别最后出现的分隔符为小数分隔符,适配1,234.56(英文格式)或1.234,56(欧洲格式)
  • 处理了开头可能存在的空格,兼容更多输入场景

内容的提问来源于stack exchange,提问作者CrazyEight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:52:44