2011-01-25 17 views
48

Ricevo "7+" o "5+" o "+5" da XML e voglio estrarre solo il numero dalla stringa utilizzando Regex. es Regex.Match funzioneRegex per ottenere NUMBER solo da String

 stringThatHaveCharacters = stringThatHaveCharacters.Trim(); 
     Match m = Regex.Match(stringThatHaveCharacters, "WHAT I USE HERE"); 
     int number = Convert.ToInt32(m.Value); 
     return number; 

risposta

61

\d+

\d() rappresenta qualsiasi cifra, + per uno o più. Se vuoi prendere anche numeri negativi puoi usare -?\d+.

Si noti che come una stringa, deve essere rappresentato in C# come "\\d+", o @"\d+"

4

Sia [0-9] o \d dovrebbe essere sufficiente se avete solo bisogno di una sola cifra. Aggiungi + se hai bisogno di più.


1 La semantica è leggermente diversa in quanto \d corrisponde potenzialmente qualsiasi cifra decimale in qualsiasi script là fuori che utilizza cifre decimali.

+0

si prega di definire regex esatto da utilizzare in funzione di Regex.Match .... Perché im non va bene in Regex (SYNTAX) –

+0

Per una singola cifra non è necessaria una regex: 'char digit = s.First (Char.IsDigit);'. Lo aggiungerei alla mia risposta, ma non penso che sia il caso qui. – Kobi

+0

@Kobi: Ciò richiederebbe comunque un'iterazione esplicita sulla stringa. La maggior parte delle persone che scelgono di usare regex non vorrebbe fare questo :-) – Joey

80

Le risposte sopra sono grandiose. Se hai bisogno di analizzare tutti i numeri su una stringa che sono non consecutivi allora quanto segue può essere di qualche aiuto:

string input = "1-205-330-2342"; 
string result = Regex.Replace(input, @"[^\d]", ""); 
Console.WriteLine(result); // >> 12053302342 
+0

Mi soddisfa questa risposta - funziona! – peterincumbria