2016-08-22 4 views
0

Я относительно новичок в программировании на C#, и прошу прощения, если это просто, но мне нужна помощь.Извлечение и чтение десятичных чисел из строки в C#

Мне нужна функция, которая будет «извлекать» правильные И десятичные числа из строки и помещать их в массив. Я знаком с

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

но это только вытаскивает целые числа. Если у меня есть строка «19 штук 58», это займет 19 и 58 и сохранит их в два разных поля массива. Однако, если бы у меня было «19.58 something», он снова примет их как два отдельных числа, а я хочу зарегистрировать его как одно десятичное число.

Есть ли способ заставить его «читать» такие числа, как одно десятичное число, используя Regex или какой-либо другой метод?

Заранее спасибо.

+0

В ваших примерах вы можете разделить строку на пробелы. Так будет всегда? – khargoosh

+0

Да, они всегда будут разделены. То, что я делаю, будет выглядеть примерно так: "21.32a 4.4b 3.75c" Я хочу, чтобы иметь возможность извлекать эти десятичные числа. –

ответ

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(); 

     } 
    } 

} 
+0

После небольшой настройки, мне удалось включить его в мою программу. Спасибо вам за помощь. –

0

Попробуйте

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