c#提取字符串所有数值(包括小数)

时间:2025-02-21 07:36:26

背景介绍

  处理数据之时需要把字符串中所有的数值提取出来,但是这些数据有整数也有小数,所以利用正则表达式将其提取出来;

具体方法

  这里的思路大体就是提取小数的内容,然后把小数的给去除,最后提取整数,这样就可以避免数值重复的情况,具体代码如下所示

public static List<String> getAllNum(String str)
{
    List<String> _list = new List<string>();

    if (!String.IsNullOrEmpty(str))
    {
        String pattern = @"\d*\.\d*|0\.\d*[1-9]\d*$";
        Regex regex = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
        MatchCollection matchs = regex.Matches(str);
        foreach (Match m in matchs)
        {
            _list.Add(m.Groups[0].Value);
        }
        str = Regex.Replace(str, pattern, "");

        String pattern2 = @"[0-9]+";
        Regex regex2 = new Regex(pattern2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
        MatchCollection matchs2 = regex2.Matches(str);
        foreach (Match m in matchs2)
        {
            _list.Add(m.Groups[0].Value);
        }
    }

    return _list;
}

总结

  从较长的文本中提取所需内容,利用正则表达式可以帮助我们简便处理。