116 votos

Buscar y extraer un número de una cadena

Tengo un requerimiento para encontrar y extraer un número contenido dentro de una cadena.

Por ejemplo, de estas cadenas:

cadena de prueba = "1 prueba"
cadena de prueba1 = " 1 prueba"
cadena de prueba2 = "prueba 99"

¿Cómo puedo hacer esto?

245voto

Tim Pietzcker Puntos 146308

\d+ es la expresión regular para un número entero. Entonces

//System.Text.RegularExpressions.Regex
resultString = Regex.Match(subjectString, @"\d+").Value;

devuelve una cadena que contiene la primera aparición de un número en subjectString.

Int32.Parse(resultString) luego te dará el número.

34voto

LexRema Puntos 1755

Recorre la cadena y utiliza Char.IsDigit

string a = "str123";
string b = string.Empty;
int val;

for (int i=0; i< a.Length; i++)
{
    if (Char.IsDigit(a[i]))
        b += a[i];
}

if (b.Length>0)
    val = int.Parse(b);

28voto

Dave Puntos 156

Así es como limpio los números de teléfono para obtener solo los dígitos:

string numericPhone = new String(phone.Where(Char.IsDigit).ToArray());

20voto

Pranay Rana Puntos 69934

Utilice una expresión regular ...

Regex re = new Regex(@"\d+");
Match m = re.Match("test 66");

if (m.Success)
{
    Console.WriteLine(string.Format("RegEx encontrada " + m.Value + " en la posición " + m.Index.ToString()));
}
else
{
    Console.WriteLine("¡No ingresaste una cadena que contenga un número!");
}

12voto

spajce Puntos 4740

Aquí hay una versión de Linq:

string s = "123iuow45ss";
var getNumbers = (from t in s
                  where char.IsDigit(t)
                  select t).ToArray();
Console.WriteLine(new string(getNumbers));

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X