2011-09-27 16 views
0

私はこのような文字列のすべての桁を取得したいと思い、文字列内のすべての数字を見つける:正規表現:

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

は、あなたが私を助けることができます:私はこのコードを使用してい

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

良いパターンを取得するには?

感謝

OK、良いコードは次のとおりです。

おかげでダニエル

私はこのコードを使用しています:

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をしたいです。そのパターンを持つグループは1つだけです。あなたが正規表現で立ち往生されていない場合は

+0

ありがとうダニエル 私はこのコードを使用しています: var pattern = @ "(\ d)"; var ms = System.Text.RegularExpressions.Regex.Matches(value、pattern); (ms.Count> 0) if } } – Bob