2013-11-04 23 views
5

Sto cercando di estrarre numeri interi di lunghezza diversa da una stringa con molta formattazione. La stringa in questione potrebbe essere la seguente:C# Estrarre più numeri da una stringa

string s = "Hallo (221122321 434334 more text3434 even mor,34343 343421.343sf 343"; 

L'uscita che sto cercando è un array di:

{221122321,434334,3434,34343,343421,343,343} 

risposta

24
var result = new Regex(@"\d+").Matches(s) 
           .Cast<Match>() 
           .Select(m => Int32.Parse(m.Value)) 
           .ToArray(); 
+2

Soluzione molto bella '+ 1' –

+1

Ottima soluzione, ma cambierei' .OfType 'a' .Cast 'per migliorare Indica che mi aspetto che tutti gli elementi della partita siano effettivamente di tipo "Match" (non possono essere altri tipi). –

+1

Non vorreste cambiare 'm => m.Value' in' m => Int32.Parse (m.Value) 'quindi avete una matrice di int, invece di una matrice di stringa? (Non ci sono citazioni nell'output desiderato.) –

-1

utilizzare un ciclo foreach come questo:

string result = ""; 

foreach (string str in s) 
{ 
    int number; 
    if (int.TryParse(str, out number)) 
     result += s; 
    else 
     result += ","; 
} 
+2

Questo non funzionerà, inoltre non comporterà una matrice. –

Problemi correlati