2011-09-27 2 views
0

Я хотел бы получить все цифры из строки, как это:регулярное выражение: найти все цифры в строке

"0" => Groups = "0" 
"1 2-3" => Groups = "1", "2", "3" 
"45i6" => Groups = "4", "5", "6" 

Я использую этот код:

var pattern = @"(\d)"; 
var m = System.Text.RegularExpressions.Regex.Match(value, pattern); 
if(m.Success) 
{ 
    foreach (var gp in m.Groups) 
    { 
     Console.WriteLine(gp); 
    } 
} 

Можете ли вы мне помочь чтобы получить хороший образец, пожалуйста?

Большое спасибо

OK, хороший код:

Благодаря Daniel

Я использую этот код:

var pattern = @"(\d)"; 
var ms = System.Text.RegularExpressions.Regex.Matches(value, pattern); 
if(ms.Count > 0) 
{ 
    foreach (var m in ms) 
    { 
     Console.WriteLine(m); 
    } 
} 
+6

Что не так с кодом? – qJake

ответ

3

Если вы не застряли на регулярных выражениях, более простой метод будет:

var digits = someString.Where(c => char.IsDigit(c)).ToArray(); 
+3

или даже: 'someString.Where (Char.IsDigit) .ToArray();' – soniiic

+0

@soniiic Хороший вызов - я всегда забываю об этом. ReSharper постоянно кричит на меня за это. –

3

Вы хотите сделать Matches. У вас будет только одна группа с этим шаблоном.

+0

Спасибо Daniel Я использую этот код: var pattern = @ "(\ d)"; var ms = System.Text.RegularExpressions.Regex.Matches (значение, шаблон); if (ms.Count> 0) { foreach (var m in ms) { Console.WriteLine (m); } } – Bob

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