Buen día a todos!! En esta oportunidad se mostrará un ejemplo de cómo sumar números incrustados en una cadena. Para lograr esto se necesita recorrer la cadena mediante e ir analizando las posibles de validar la suma. Para ello utilizaremos 2 TextBox y 1 Boton :
Luego insertaremos el siguiente código explicado detalladamente para sumar los números dentro de una cadena :
1: private void btnSumar_Click(object sender, EventArgs e)
2: {
3: if (txtOriginal.Text.Trim().Length == 0)
4: {
5: MessageBox.Show("Ingrese cadena");
6: }
7: else
8: {
9: //Declaro las variables numero y suma, donde numero sera el numero
10: //encontrado durante el recorrido, si el que le sigue es otro numero
11: //se concatenará(formando otro numero) sino se asumira que es unico
12: // se sumará con el proximo numero que encuentre.
13: string numero = "";
14: double suma = 0.00;
15: double nn = 0.00;
16: //Toda la cadena ingresada lo almaceno en una variable
17: string s = txtOriginal.Text.Trim();
18: //La variable creada anteriormente lo convertimos en un arreglo de
19: //caracteres almacenandola en el char "a".
20: char[] a = s.ToCharArray();
21: //Aqui recorremos el arreglo creado.
22: for (int i = 0; i <= s.Length - 1; i++)
23: {
24: //Si el char es un numero
25: if (char.IsNumber(a[i]))
26: {
27: //Si el char siguiente excede el limite de la longitud
28: //del arreglo
29: if (i + 1 > s.Length - 1)
30: {
31: //Concatenamos el numero
32: numero = numero + a[i].ToString();
33: nn = Convert.ToDouble(numero.ToString());
34: //y sumamos
35: suma = suma + nn;
36: numero = "";
37: }
38: //sino excede el limite entonces...
39: else
40: {
41: //si el char siguiente no es numerico
42: if (!char.IsNumber(a[i + 1]))
43: {
44: //y es un punto
45: if (a[i + 1].ToString().Equals("."))
46: {
47: //y el que le sigue al punto es un numerico
48: if (char.IsDigit(a[i + 2]))
49: {
50: //entonces concatenamos
51: numero = numero + a[i].ToString();
52: }
53: //o no es un punto entonces no juntamos nada
54: //------
55: }
56: //sino es un punto entonces...
57: else
58: {
59: //concatenamos el numero
60: numero = numero + a[i].ToString();
61: //lo convertimos a double para sumarlo
62: nn = Convert.ToDouble(numero.ToString());
63: //lo sumamos con el numero anterior
64: suma = suma + nn;
65: //seteamos para que no se junte todos los numeros
66: numero = "";
67: }
68: }
69: //si es numerico
70: else
71: {
72: //concatenamos el numero
73: numero = numero + a[i].ToString();
74: }
75: }
76: }
77: //Si el char no es numerico pero es un PUNTO(.)
78: //entonces...
79: if (a[i].ToString().Equals("."))
80: {
81: //verificamos si el anterior es un numero
82: if (char.IsNumber(a[i - 1]))
83: {
84: //Ahora, tambien verificamos si el posterior es
85: //un numero
86: if (char.IsNumber(a[i + 1]))
87: {
88: //concatenamos el numero(2+5=25) o (23.+3=23.3)
89: numero = numero + a[i].ToString();
90: }
91: }
92: }
93: }
94: //Una vez terminado el recorrido mostramos
95: //la suma total pero antes la convertimos
96: //en cadena para mostrarlo en un label
97: txtResultado.Text = suma.ToString(); ;
98: }
99: }
Ejecutamos e insertamos la siguiente cadena por ejemplo en txtOriginal :
“esto es un tex100to de prueba y .74 además 13.82 finaliza con el simbolo#”
Pulsamos Sumar números y obtendremos el siguiente resultado :
Espero les haya sido de mucha utilidad. Hasta una nueva oportunidad. Saludos!!.
Amigos comparto esta pagina para los que estamos iniciando en vb.net con Sql Server espero que sea de su agrado.
ResponderEliminarhttp://adf.ly/Z82Hk