2015-05-19 5 views
0

Я знаю, что это будет извлечь номер и сохранить в качестве межд -Извлечение нескольких целых чисел из строки и хранить в INT

string inputData = "sometex10"; 

string data = System.Text.RegularExpressions.Regex.Match(inputData, @"\d+").Value; 
int number1 = Convert.ToInt32(data); 

Я пытаюсь извлечь несколько номеров из строки 10 + EG-2 + 3 и сохраните их как отдельные целые числа. примечание: количество номеров, которое вводит пользователь, неизвестно. Любые предложения очень ценятся благодаря

+0

Используйте это http://www.dotnetperls.com/regex-split – kanchirk

+0

Как ваши целые позиции в вашей строке? Можете ли вы показать пример ввода и вывода, который вы хотите? –

+0

вход - 10 + 2 - 5, выход - int 10, 2, 5; –

ответ

1
C# program that uses Regex.Split 

Referencing: http://www.dotnetperls.com/regex-split

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main() 
    { 
    // 
    // String containing numbers. 
    // 
    string sentence = "10 cats, 20 dogs, 40 fish and 1 programmer."; 
    // 
    // Get all digit sequence as strings. 
    // 
    string[] digits = Regex.Split(sentence, @"\D+"); 
    // 
    // Now we have each number string. 
    // 
    foreach (string value in digits) 
    { 
     // 
     // Parse the value to get the number. 
     // 
     int number; 
     if (int.TryParse(value, out number)) 
     { 
      Console.WriteLine(number); 
     } 
    } 
    } 
} 
+0

Спасибо за это, но как я могу сохранить вывод как отдельные целые числа? –

+0

'int [] numbers = new int [digits.Length]; for (int index = 0; index Corak

+0

Спасибо, вывод из Console.WriteLine (numbers); дает мне - System.Int32 [] ?? –

0

Вы можете использовать что-то вроде этого:

string inputData = "sometex10"; 
List<int> numbers = new List<int>(); 
foreach(Match m in Regex.Matches(inputData, @"\d+")) 
{ 
    numbers.Add(Convert.ToInt32(m.Value)); 
} 

Это будет хранить целые числа в списке numbers

1

Вы можете использовать однострочный LINQ:

var numbers = Regex.Matches(inputData, @"\d+").Select(m => int.Parse(m.Value)).ToList(); 

Или использовать ToArray(), если вы предпочитаете массив вместо списка.

+0

Хорошее решение :-) +1 – kanchirk

Смежные вопросы