19 mar 2012

[WinForm] – Sumar números dentro de una cadena

 

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

1 comentario:

  1. Amigos comparto esta pagina para los que estamos iniciando en vb.net con Sql Server espero que sea de su agrado.
    http://adf.ly/Z82Hk

    ResponderEliminar