none
Obtener parte numerica de un campo RRS feed

  • Pregunta

  • Buen dia amigos tengo una situacion donde quiero obtener la parte numerica de una campo que esta compuesto por la siguiente estructura:

    Nombre cuenta -123456892368, donde solo quiero la parte numerica, contando la parte de caracteres tiene 15 posiciones hasta el guion.

    Por favor puedan darme una mano

    lunes, 1 de octubre de 2018 18:56

Respuestas

  • Hola ManuelAguila:

    Entiendo que tu cadena es así

    private void button1_Click(object sender, EventArgs e)
            {
                string campo = "Nombre cuenta -123456892368";
                string solucion = campo.Substring(15, (campo.Length)-15);
                MessageBox.Show("solucion: " + solucion);
                Int64 salida;
                bool result = Int64.TryParse(solucion, out salida);
                if (result)
                    MessageBox.Show("El resultado es entero: " + salida);
                else
                    MessageBox.Show("El resultado no es entero: " + solucion);
                try
                {
                    Int64 i = Convert.ToInt64(campo.Substring(15, (campo.Length) - 15));
                    MessageBox.Show("Convertido correctamente");
                }
                catch (FormatException e2)
                {
                    MessageBox.Show("problemas al convertir"+e2.ToString());
                }
    
            }
    Dos posibles soluciones. Puedes aplicar la que más te guste.

    • Marcado como respuesta ManuelAguila martes, 2 de octubre de 2018 15:05
    lunes, 1 de octubre de 2018 19:28
  • Hola manuel, puedes usar la siguiente expresión lambda

    string prueba = "Nombre cuenta -123456892368";
    int result=0;
    string prueba2 = new string(prueba.ToCharArray().Where(x => int.TryParse(x.ToString(), out result)).ToArray());
    MessageBox.Show(prueba2);

    int.TryParse evalua la expresión, si se puede convertir en este caso a un tipo int entonces devolverá true y almacenará el resultado en la variable result, el where entonces filtra todos los caracteres que se puedan convertir a un número entero (es decir int.Tryparse devuelve true), y el new string construye la nueva cadena con los caracteres filtrados.

    ¡Saludos!

    • Marcado como respuesta ManuelAguila martes, 2 de octubre de 2018 15:07
    lunes, 1 de octubre de 2018 19:37

Todas las respuestas

  • Hola ManuelAguila:

    Entiendo que tu cadena es así

    private void button1_Click(object sender, EventArgs e)
            {
                string campo = "Nombre cuenta -123456892368";
                string solucion = campo.Substring(15, (campo.Length)-15);
                MessageBox.Show("solucion: " + solucion);
                Int64 salida;
                bool result = Int64.TryParse(solucion, out salida);
                if (result)
                    MessageBox.Show("El resultado es entero: " + salida);
                else
                    MessageBox.Show("El resultado no es entero: " + solucion);
                try
                {
                    Int64 i = Convert.ToInt64(campo.Substring(15, (campo.Length) - 15));
                    MessageBox.Show("Convertido correctamente");
                }
                catch (FormatException e2)
                {
                    MessageBox.Show("problemas al convertir"+e2.ToString());
                }
    
            }
    Dos posibles soluciones. Puedes aplicar la que más te guste.

    • Marcado como respuesta ManuelAguila martes, 2 de octubre de 2018 15:05
    lunes, 1 de octubre de 2018 19:28
  • Hola manuel, puedes usar la siguiente expresión lambda

    string prueba = "Nombre cuenta -123456892368";
    int result=0;
    string prueba2 = new string(prueba.ToCharArray().Where(x => int.TryParse(x.ToString(), out result)).ToArray());
    MessageBox.Show(prueba2);

    int.TryParse evalua la expresión, si se puede convertir en este caso a un tipo int entonces devolverá true y almacenará el resultado en la variable result, el where entonces filtra todos los caracteres que se puedan convertir a un número entero (es decir int.Tryparse devuelve true), y el new string construye la nueva cadena con los caracteres filtrados.

    ¡Saludos!

    • Marcado como respuesta ManuelAguila martes, 2 de octubre de 2018 15:07
    lunes, 1 de octubre de 2018 19:37
  • Se me ocurre algo así, Extraerá los números de una cadena.

      string patron = @"(?: *)?\d+(?:\.\d+)?";
                string operacion = "Nombre cuenta -123456892368";
                Regex regex = new Regex(patron);
                var numero = regex.Matches(operacion)[0];
                long cuenta = 0;
                if (long.TryParse(numero.Value, out cuenta))
                  Console.WriteLine(cuenta);

    Me Comentas.

    lunes, 1 de octubre de 2018 21:38
  • Muchas gracias Javi, me sirvio mucho
    martes, 2 de octubre de 2018 15:06
  • Muchas gracias Yerald, me fue de utilidad, saludos
    martes, 2 de octubre de 2018 15:07