2011-01-25 28 views
48

Recibo "7+" o "5+" o "+5" de XML y quiero extraer solo el número de la cadena usando Regex. ) función (Regex para obtener NÚMERO solo de la Cadena

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

Respuesta

61

\d+

\d por ejemplo Regex.Match representa cualquier dígito, + para uno o más. Si desea capturar números negativos también puede usar -?\d+.

Tenga en cuenta que como una cadena, que debe estar representado en C# como "\\d+", o @"\d+"

4

De cualquier [0-9] o \d debería ser suficiente si sólo se necesita un solo dígito. Adjunte + si necesita más.


1 La semántica son ligeramente diferentes como potencialmente \d partidos cualquier dígito decimal en cualquier script por ahí que usa dígitos decimales.

+0

favor definir expresiones regulares exacta a utilizar en función de Regex.Match .... porque im no es bueno en Regex (SYNTAX) –

+0

Para un solo dígito, no necesita una expresión regular: 'char digit = s.First (Char.IsDigit);'. Agregaría eso a mi respuesta, pero no creo que ese sea el caso aquí. – Kobi

+0

@Kobi: Eso aún necesitaría una iteración explícita sobre la cadena. La mayoría de las personas que opten por usar expresiones regulares no querrían hacer esto :-) – Joey

80

Las respuestas anteriores son geniales. Si usted está en necesidad de analizar todos los números de una cadena que son no consecutivos, a continuación, lo siguiente puede ser de ayuda:

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

Me queda esta respuesta - ¡funciona! – peterincumbria

Cuestiones relacionadas