从C#中的字符串中提取和读取十进制数字

时间:2016-08-22 10:15:49

标签: c# regex

我对C#编程比较陌生,如果这很简单,我很抱歉,但我需要帮助。

我需要一个能够提取'来自字符串的常规AND十进制数字并将它们放在一个数组中。我熟悉

    string[] extractData = Regex.Split(someInput, @"\D+")

但这只取整数。如果我有一个字符串" 19 58"它需要19和58并将它们存储到两个不同的数组字段中。但是如果我有" 19.58的东西"它将再次将它们作为两个单独的数字,而我想将其注册为一个十进制数字。

有没有办法让它“读”'这样的数字作为一个十进制数,使用正则表达式或其他方法?

提前致谢。

2 个答案:

答案 0 :(得分:0)

试试这个

Regex.Replace(someInput, "[^-?\d+\.]", ""))

答案 1 :(得分:0)

请尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication9
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string[] inputs = {
                                 "9 something 58" ,
                                 "19.58 something"
                             };

            foreach (string input in inputs)
            {
                MatchCollection matches = Regex.Matches(input, @"(?'number'\d*\.\d*)|(?'number'\d+[^\.])");
                foreach (Match match in matches)
                {
                    Console.WriteLine("Number : {0}", match.Groups["number"].Value);
                }
            }
            Console.ReadLine();

        }
    }

}