Principales respuestas
Obtener parte numerica de un campo

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
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
-
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
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
-
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
-
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.
-
-