Sumar los numeros de una cadena de texto

03/04/2008 - 05:41 por Gustavo | Informe spam
Estimados, recien estoy empezando con el c# y mi consulta es.

Tengo una cadena de texto de numeros, ej. "3456"

ahora, lo que necesito es sumar cada uno de los numeros, es decir 3 + 4 + 5
+ 6 = 18, mi intención es poner la cadena en un vector y luego sumarlo por
medio de un bucle, pero no encuentro la manera de hacerlo y por otra parte
no logro convertir un string en entero.

Espero alguien me pueda ayudar

muchas gracias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
03/04/2008 - 08:31 | Informe spam
"Gustavo" wrote in message
news:
Estimados, recien estoy empezando con el c# y mi consulta es.

Tengo una cadena de texto de numeros, ej. "3456"

ahora, lo que necesito es sumar cada uno de los numeros, es decir 3 + 4 +
5 + 6 = 18, mi intención es poner la cadena en un vector y luego sumarlo
por medio de un bucle, pero no encuentro la manera de hacerlo y por otra
parte no logro convertir un string en entero.



- El propio string ya se comporta como un vector. Puedes sacar cada carácter
con el indexador cadena[n], o recorrer los caracteres con un foreach.
- Para convertir un string en entero puedes usar int.Parse(cadena), y
también tienes el TryParse si quieres detectar errores, y también te puede
resultar útil el Convert.ToInt32.

string s = "3456";
int suma=0;
foreach (char c in s)
{
suma+=int.Parse(c.ToString());
}
Respuesta Responder a este mensaje
#2 Luis Miguel Blanco
03/04/2008 - 08:34 | Informe spam
Hola Gustavo

Una posible técnica a emplear sería convertir el número a un array de tipo
Char y a continuación, recorrerlo, de forma que en cada iteración obtienes un
número que puedes ir sumando a una variable que contenga el resultado total a
obtener. En el siguiente bloque de código tienes un ejemplo.

//
char[] aNumeros = "3456".ToCharArray();
int nResultado = 0;
foreach (char chNumero in aNumeros)
{
nResultado += int.Parse(chNumero.ToString());
}
//

Espero que te sirva de ayuda.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com
http://geeks.ms/blogs/lmblanco/


"Gustavo" wrote:

Estimados, recien estoy empezando con el c# y mi consulta es.

Tengo una cadena de texto de numeros, ej. "3456"

ahora, lo que necesito es sumar cada uno de los numeros, es decir 3 + 4 + 5
+ 6 = 18, mi intención es poner la cadena en un vector y luego sumarlo por
medio de un bucle, pero no encuentro la manera de hacerlo y por otra parte
no logro convertir un string en entero.

Espero alguien me pueda ayudar

muchas gracias



Respuesta Responder a este mensaje
#3 Alberto Poblacion
03/04/2008 - 09:28 | Informe spam
"Gustavo" wrote in message
news:
Tengo una cadena de texto de numeros, ej. "3456"

ahora, lo que necesito es sumar cada uno de los numeros, es decir 3 + 4 +
5 + 6 = 18, mi intención es poner la cadena en un vector y luego sumarlo
por medio de un bucle [...]



Y además de la respuesta anterior, por si quieres otra solución más
original, te propongo resolverlo en una única línea usando LINQ, suponiendo
que el código lo estés desarrollando sobre el Framework versión 3.5:

string s = "3456";
int suma = s.ToCharArray().Sum(c => int.Parse(c.ToString()));
Respuesta Responder a este mensaje
#4 Octavio Hernandez
03/04/2008 - 11:20 | Informe spam
¡Hola, Alberto y LuisMi!

Esta variante es más concisa y eficiente:

int suma = s.Sum(c => c - '0');

Usar los operadores de LINQ en lugar de bucles tradicionales es el asunto de
este post:

http://geeks.ms/blogs/ohernandez/ar...o-mal.aspx

Saludos - Octavio


"Alberto Poblacion" wrote
in message news:
"Gustavo" wrote in message
news:
Tengo una cadena de texto de numeros, ej. "3456"

ahora, lo que necesito es sumar cada uno de los numeros, es decir 3 + 4 +
5 + 6 = 18, mi intención es poner la cadena en un vector y luego sumarlo
por medio de un bucle [...]



Y además de la respuesta anterior, por si quieres otra solución más
original, te propongo resolverlo en una única línea usando LINQ,
suponiendo que el código lo estés desarrollando sobre el Framework versión
3.5:

string s = "3456";
int suma = s.ToCharArray().Sum(c => int.Parse(c.ToString()));


Respuesta Responder a este mensaje
#5 Alberto Poblacion
03/04/2008 - 12:52 | Informe spam
"Octavio Hernandez" wrote in message
news:eS%239%
Esta variante es más concisa y eficiente:

int suma = s.Sum(c => c - '0');



Aprovecho para preguntarte, Octavio: ¿Por qué el intellisense no
muestra los métodos extensores para el String? Lo primero que probé antes de
poner mi respuesta fue precisamente lo de teclear "s.Sum", pero como el
Visual Studio no me ofrecía el "Sum" pues tiré por la vía segura, y metí
entre medias el ToCharArray. Pero, efectivamente, si tecleas el s.Sum(...) a
pesar de que no salga en el intellisense, y compilas, la compilación tiene
éxito. Y es lógico que así sea, puesto que String implementa IEnumerable, y
Sum es un Extensor de IEnumerable. Lo cuál nos deja con la duda de por qué
no sale en intellisense.¿Se te ocurre por qué?
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida