Ejercicios resueltos de string en C#
Abr 22, 2010 Codigos C# 18 comentarios
Aquí les pongo unos cuantos ejercicios resueltos y códigos escritos en C# relacionados con el manejo de strings (cadenas) que seguro te ayudará de muchas formas a mejorar el uso de este popular tipo de dato. Pero primero veamos cuales son los métodos y propiedades de esta clase String. Métodos y propiedades fundamentales public char this[int index] {get;} Devuelve el caracter de la posición especificada de la cadena. public int Length {get;} Devuelve la longitud de la cadena (cantidad de caracteres que contiene) empezando a contar desde 1. public string Insert(int startIndex, string value); Inserta la cadena especificada a partir de la posición dada. public string Remove(int startIndex,int count); Elimina el número especificado de caracteres a partir de la posición dada. public string[] Split(params char[] separator); Busca las subcadenas contenidas dentro de la cadena, delimitándolas por los separadores que se le especifiquen, y las copia a un arreglo de cadenas. public string Substring(int startIndex); Devuelve la subcadena contenida a partir de la posición especificada. public string Substring(int index, int length); Devuelve la subcadena que empieza a partir del índice específico, y tiene la longitud indicada. Ejercicios resueltos 1- Implemente un método que dado un string s cualquiera, devuelva un nuevo string que se el inverso de s. (ej: entrada: “puntopeek”; salida: “keepotnup”)
public string Invierte(string a) { string b = ""; for (int i = 0; i < a.Length ; i++) b = a[i] + b; return b; }
2- Implemente una función que dado un string, una posición de comienzo y una cantidad de caracteres, devuelva una subcadena (substring) de una cadena dada a partir de los parámetros dados (ej: entrada: “puntopeek”, pos= 2, cant= 4; salida: “ntop”.)
public string SubString(string a, int pos, int cant) { string pedazo = "" ; if((pos + cant) > a.Length) throw new Exception(""); else { for (int j = pos; j < cant + pos ; j ++ ) pedazo += a[j]; return pedazo; } }
3- Implemente un método Replace, que reciba un string s, y dos caracteres old y new. Dicha función debe reemplazar todas las ocurrencias del caracter old por el carácter new, y devolver un nuevo string con dicha característica. (ej: entrada: “programacion”, old= ‘a’, new=’i’; salida: “progrimicion”)
public string Replace (string a, char old, char new) { string result = ""; for (int i = 0; i < a.Length ; i++) { if(a[i] == old) result += new; else result += a[i]; } return result; }
4*- Implemente un método Combinar, que dado un string s, devuelva todas las combinaciones posibles que se pueden formar a partir de los caracteres de s. Este método es un poco más complicado, pero muy útil y práctico. Para esto usaremos recursividad, para ir generando todas las posibles combinaciones. (ej: entrada: “hoy”; salida: “hoy”, “hyo”, “ohy”, “oyh”, “yho”, “yoh”)
public void Combina(string s) { bool[] marcas = new bool[s.Length]; Combina(s, "", marcas); } void Combina(string original, string combinado, bool[] marcas) { if (original.Length == combinado.Length) Console.WriteLine(combinado); for (int i = 0; i < marcas.Length; i++) { if (!marcas[i]) { marcas[i] = true; Combina(original, combinado + original[i], marcas); marcas[i] = false; } } }
Si tienes alguna duda sobre los códigos anteriores, o quieres agregar algo, en los comentarios. Bueno, hasta aquí esta entrega de ejercicios resueltos. Espero que te sirva, y si quieres practicar, guíate por estos ejemplos y trata de implementar otros métodos relacionados con string, como son: 1- Eliminar un carácter dado de una cadena.
public string Eliminar(string s, char c).
2- Ver si un string es palíndromo ó no, o sea, se escribe igual al derecho que al revés.
public bool EsPalindromo(string s)
3- Ver cuál es el letra que más se repite en una cadena.
public char MasPopular(string s)
Es muy aconsejable que traten de hacer estos ejercicios solos, auxiliándose de los ejemplos anteriores. De todos modos pondré la respuesta de estos ejercicios en una próxima entrega la semana que viene.
Compartir:
Relacionados
algunos artículos que te pueden interesarLa clase String en C#
Ago 22, 2009 | Tutoriales C# | 4 comentarios
Identificar subcadenas en C#
Oct 4, 2011 | Codigos C# | 7 comentarios
Generando permutaciones en C#
Sep 6, 2009 | Codigos C# | 16 comentarios
Tres formas de Invertir un String
Oct 3, 2009 | Codigos C# | 5 comentariosEjercicios resueltos de array con C# (2)
May 3, 2009 | Codigos C# | 12 comentarios
18 comentarios
Forma parte de nuestra discusión y síguela de cercaGracias por tu tiempo….de eso se trata el conocimiento….Compartirlo con otros y ayudar a comprender a otros….
Autor: jairo | Fecha: Abr 27, 2010.
Ejercicios resueltos de #string en #C# http://bit.ly/98mk3F
Autor: Tommy J. | Fecha: May 8, 2010.
#Puntopeek Ejercicios resueltos de string en C# http://bit.ly/dBQsCW
Autor: TecnoNator | Fecha: May 13, 2010.
hace tiempo envie un mensaje y no me han contestado
Autor: Maria Eliza | Fecha: May 18, 2010.
Muchísimas gracias por tus ejercicios resueltos. Me emociona ver personas que comparten sus conocimientos de esta forma. Espero algún día poder ayudar de la forma que tú lo has hecho.
Soy un programador que estuve algún tiempo tirando líneas en VB.net para aplicaciones Windows Form. Ahora me he reciclado y estoy empezando a programar con C# para desarrollar aplicaciones Web. Si bien en los primeros momentos me costó mucho el cambio, ahora estoy encantado con el C# y de momento no quiero saber nada del VB.
Gracias de nuevo.
Autor: Jaime | Fecha: Sep 22, 2010.
buen dia, me gustaria saber cual es el equivalente en C# del operador $ de visual fox pro, ya que con ese operador yo le podía indicar si un valor estaba presente en la cadena de valores que yo le indicaba.
Autor: marcel rodriguez | Fecha: Sep 23, 2010.
Marcel, podrías poner un ejemplo de código utilizando la función que mencionas? No estoy seguro de entender a cual operador te refieres…
Autor: Tomy | Fecha: Sep 23, 2010.
Jaime, la verdad es que C# es un buen lenguaje de programación, y muy cómodo. No tienes que declarar punteros como en C/C++, y tiene muchas facilidades para programar, yo lo recomiendo 100%.
En cuanto al VB, es un lenguaje un poco para empezar, todos hemos hecho algún programita en VB, pero no tiene la potencialidad de C# ni de ningún otro lenguaje orientado a objetos.
Autor: Tomy | Fecha: Sep 23, 2010.
Es algo similar a esto valor $ “ABCD” donde el valor q devuelve es verdadero o falso y valida q el valor coincida con alguno de los caracteres que estan dentro de las comillas. Valor puede ser A,B,C,D en caso de tener aalguno de ellos, devuelve falso.
Autor: marcel rodriguez | Fecha: Sep 23, 2010.
En C# no hay un operador para eso, pero si algunos métodos en la clase String por ejemplo, puedes usar el método s.Contains(“valor”) que devuelve true, si “valor” está en la cadena “s”. Te pongo un código de ejemplo.
Autor: Tomy | Fecha: Sep 27, 2010.
muchas gracias por el comentario, y fue de utilidad. sabras cual es la funcion en C# que me indica el valor de la posicion de un caracter. por ejemplo: una cadena “ABCD” yo le indique que busque “C” y me devuelva el valor 3.
Autor: marcel rodriguez | Fecha: Sep 27, 2010.
La función que indica la posición de un caracter es IndexOf():
Autor: Tomy | Fecha: Sep 28, 2010.
buenas noches, quisiera una mano para optimizar un codigo en c# ya que esta demorando demasiado, quizas con un for se pueda mejorar.
return (Concepto(typeof(C_Y100))==1 ? 1-Concepto(typeof(C_Y131)) : 0)+(Concepto(typeof(C_Y101))==1 ? 1-Concepto(typeof(C_Y132)): 0)+(Concepto(typeof(C_Y102))==1 ?
1-Concepto(typeof(C_Y133)) : 0)+(Concepto(typeof(C_Y103))==1 ? 1-Concepto(typeof(C_Y134)) : 0)+(Concepto(typeof(C_Y104))==1 ? 1-Concepto(typeof(C_Y135)) :
0)+(Concepto(typeof(C_Y105))==1 ? 1-Concepto(typeof(C_Y136)) : 0)+(Concepto(typeof(C_Y106))==1 ? 1-Concepto(typeof(C_Y137)) : 0)+(Concepto(typeof(C_Y107))==1 ?
1-Concepto(typeof(C_Y138)) : 0)+(Concepto(typeof(C_Y108))==1 ? 1-Concepto(typeof(C_Y139)) : 0)+(Concepto(typeof(C_Y109))==1 ? 1-Concepto(typeof(C_Y140)) :
0)+(Concepto(typeof(C_Y111))==1 ? 1-Concepto(typeof(C_Y141)) : 0)+(Concepto(typeof(C_Y112))==1 ? 1-Concepto(typeof(C_Y142)) : 0)+(Concepto(typeof(C_Y113))==1 ?
1-Concepto(typeof(C_Y143)) : 0)+(Concepto(typeof(C_Y114))==1 ? 1-Concepto(typeof(C_Y144)) : 0)+(Concepto(typeof(C_Y115))==1 ? 1-Concepto(typeof(C_Y145)) :
0)+(Concepto(typeof(C_Y116))==1 ? 1-Concepto(typeof(C_Y145A)) : 0)+(Concepto(typeof(C_Y116A))==1 ? 1-Concepto(typeof(C_Y145B)) : 0)+(Concepto(typeof(C_Y116B))==1 ?
1-Concepto(typeof(C_Y145C)): 0)+(Concepto(typeof(C_Y116C))==1 ? 1-Concepto(typeof(C_Y145D)) : 0)+(Concepto(typeof(C_Y116D))==1 ? 1-Concepto(typeof(C_Y145E)) :
0)+(Concepto(typeof(C_Y116E))==1 ? 1-Concepto(typeof(C_Y145F)): 0)+(Concepto(typeof(C_Y116F))==1 ? 1-Concepto(typeof(C_Y145G)) : 0)+(Concepto(typeof(C_Y116G))==1 ?
1-Concepto(typeof(C_Y145H)): 0)+(Concepto(typeof(C_Y116H))==1 ? 1-Concepto(typeof(C_Y145I)) : 0)+(Concepto(typeof(C_Y116I))==1 ? 1-Concepto(typeof(C_Y145J)) :
0)+(Concepto(typeof(C_Y116J))==1 ? 1-Concepto(typeof(C_Y145K)): 0)+(Concepto(typeof(C_Y116K))==1 ? 1-Concepto(typeof(C_Y145L)) : 0)+(Concepto(typeof(C_Y116L))==1 ?
1-Concepto(typeof(C_Y145M)): 0)+(Concepto(typeof(C_Y116M))==1 ? 1-Concepto(typeof(C_Y145N)) : 0)+(Concepto(typeof(C_Y116N))==1 ? 1-Concepto(typeof(C_Y145O)) :
0)+(Concepto(typeof(C_Y116O))==1 ? 1-Concepto(typeof(C_Y145P)): 0);
Autor: marcel rodriguez | Fecha: Oct 20, 2010.
puxa los ejercicios si que son buenos,
espero q coloques + ejercicios sobre algoritmos y me lo mandes a mi msm .
de todos los temas … !”"”
Autor: Henrry | Fecha: Nov 10, 2010.
Marcel, por supuesto q se puede mejorar, siempre se puede mejorar un código, sobre todo cuando notas q se empiezan a repetir cosas, y usar operadores ternarios nunca me ha gustado mucho… si puedes explica un poco más de que va el código… para tratar de mejorarlo entre todos. Saludos y feliz fin d año
Autor: Tomy | Fecha: Dic 23, 2010.
hola!! necesito saber como generar una instancia de una clase “targeta” para poder rotar una imagen, sin usar el picturebox y ni el timer en c#!!!
o si me podrian compartir ejemplos de clases relacionadas, se los agradeceria mucho!!
gracias……
Autor: chester benintogn | Fecha: Mar 6, 2011.
Hola, necesito saber como formar un triángulo de números en consola…
yo ingreso n numeros desordenados pero el programa me ordena de esta manera:
1
2
3
..etc
pero deseo que salga asi
1
2 3
4 5 6
7 8 9 10, etc
gracias por la respuesta
Autor: elita | Fecha: Nov 22, 2011.
using System;
using System.Collections.Generic;
using System.Text;
namespace triangulo
{
class Program
{
static void Main(string[] args)
{
int i, j, n, aux;
Console.WriteLine(“ingrese cantidad de elementos”);
n = int.Parse(Console.ReadLine());
Console.WriteLine(“ingrese ahora los elementos”);
int[] a = new int[n+1];
for (i = 1 ; i<= n ; i++){
a[i] = int.Parse(Console.ReadLine());
}
for (i = 1 ; i i ){
if (a [j - 1 ] >= a [j ]){
aux = a [j - 1];
a [j - 1 ]= a [j];
a [j] = aux;
}
j = j – 1;
}
}
for (i= 1 ; i <= n ; i++){
Console.WriteLine(" {0}"+a[i]);
}
Console.ReadLine();
}
}
}
Autor: elita | Fecha: Nov 22, 2011.