Eh Hombre ya tengo tu codigo, dije que tuvieras paciencia porque andaba ocupado
jajaja y tambien despues de varios cabezasos contra el monitor salio perfecto
aqui te lo dejo! espero lo estudies porque esta explicado y me costo trabajo
. lo trabaje con un textbox, un boton y un label.
Código c#:
Ver originalprivate void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim().Length == 0)
{
MessageBox.Show("Ingrese cadena");
}
else
{
//Declaro las variables numero y suma, donde numero sera el numero
//encontrado durante el recorrido, si el que le sigue es otro numero
//se concatenará(formando otro numero) sino se asumira que es unico
// se sumará con el proximo numero que encuentre.
string numero = "";
double suma = 0.00;
double nn = 0.00;
//Toda la cadena ingresada lo almaceno en una variable
string s = textBox1.Text.Trim();
//La variable creada anteriormente lo convertimos en un arreglo de
//caracteres almacenandola en el char "a".
char[] a = s.ToCharArray();
//Aqui recorremos el arreglo creado.
for (int i = 0; i <= s.Length - 1; i++)
{
//Si el char es un numero
if (char.IsNumber(a[i]))
{
//Si el char siguiente excede el limite de la longitud
//del arreglo
if (i + 1 > s.Length - 1)
{
//Concatenamos el numero
numero = numero + a[i].ToString();
nn = Convert.ToDouble(numero.ToString());
//y sumamos
suma = suma + nn;
numero = "";
}
//sino excede el limite entonces...
else
{
//si el char siguiente no es numerico
if (!char.IsNumber(a[i + 1]))
{
//y es un punto
if (a[i + 1].ToString().Equals("."))
{
//y el que le sigue al punto es un numerico
if (char.IsDigit(a[i + 2]))
{
//entonces concatenamos
numero = numero + a[i].ToString();
}
//o no es un punto entonces no juntamos nada
//------
}
//sino es un punto entonces...
else
{
//concatenamos el numero
numero = numero + a[i].ToString();
//lo convertimos a double para sumarlo
nn = Convert.ToDouble(numero.ToString());
//lo sumamos con el numero anterior
suma = suma + nn;
//seteamos para que no se junte todos los numeros
numero = "";
}
}
//si es numerico
else
{
//concatenamos el numero
numero = numero + a[i].ToString();
}
}
}
//Si el char no es numerico pero es un PUNTO(.)
//entonces...
if (a[i].ToString().Equals("."))
{
//verificamos si el anterior es un numero
if (char.IsNumber(a[i - 1]))
{
//Ahora, tambien verificamos si el posterior es
//un numero
if (char.IsNumber(a[i + 1]))
{
//concatenamos el numero(2+5=25) o (23.+3=23.3)
numero = numero + a[i].ToString();
}
}
}
}
//Una vez terminado el recorrido mostramos
//la suma total pero antes la convertimos
//en cadena para mostrarlo en un label
label1.Text = suma.ToString(); ;
}
}