Ejercicios resueltos de string en C#

Abr 22, 2010 Codigos C# 27 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:

27 comentarios

Forma parte de nuestra discusión y síguela de cerca

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

String s = "ABCD";
bool b = s.Contains("A");

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():

String s = "ABCD";
int pos = s.IndexOf("C");

Autor: Tomy | Fecha: Sep 28, 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.

@elita: Gracias por compartir tu solución!

Autor: Tomy | Fecha: Oct 30, 2012.

ehmm amio gracias por la info pero si pudiers ayudarme a comprender un poquito mejor te lo agradeceria no se si podriamos contactarnos para poder hablar sobre esto gracias :)

Autor: Aaron Lopez | Fecha: Dic 3, 2012.

[...] Hace un tiempo escribí un post sobre algunos ejercicios resueltos con string, y hay uno con [...]

Autor: Buscando cadenas dentro de cadenas en C# | puntopeek | Fecha: Feb 27, 2013.

hola amigo disculpa en el ejercicio de Implemente un programa 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.. (ej: entrada: “hoy”; salida: “hoy”, “hyo”, “ohy”, “oyh”, “yho”, “yoh”) .. no lo entiendo podrias enviarlo a mi correo ,,, es que o lo estoy haciendo en c# 2010 pero en windows form no en consola me podrias ayudar!!!

Autor: Carlos | Fecha: Ago 7, 2013.

Hola, me podrias decir como hago para saber la longitud mayor de un array de string introducido por el usuario,(puede introducir varios), me interesa saber el numero entero de caracteres que contiene, no se si me he explicado bien. Muchas gracias

Autor: Manuel | Fecha: Dic 2, 2013.

Hola primeramente bueno tengo un problema simple quiero hacer esto quiero reemplazar en C Sharp la ocurrencia n para un caracter creo que se le llama indice nose… por ejemplo dado un string
s=”nosenosenosenosenose”

quiero reemplazar solo el tercer nose por un HOLA por ejemplo nose si tendria que mezclar aqui con condiciones

ah otra cosa no puedo usar coordenadas ….

Autor: Yovani Zuñiga | Fecha: Mar 12, 2014.

necesito ayuda
Subcadena más larga.

Escriba la función subcadena que reciba como entrada un vector de caracteres llamado letras y un valor
n que indica el número de caracteres en el vector, la función debe determinar el tamaño de la
subcadena más grande que tenga todos sus caracteres en orden ascendente e imprimir en la función la
subcadena

Autor: juan | Fecha: Oct 21, 2014.

Hola, alguien me podria facilitar un codigo q realice una convolucion de dos vectores ?
Osea, tengo 2 vectores y a partir de una convolucion entre ellos obtener un tercer vctor.
Gracias..!!

Autor: jose | Fecha: Nov 25, 2014.

Hola, me gustaría saber como usar distinct o el count, para que me muestre la cantidad de ciertas letras como “a” o “b”. Les agradecería mucho su ayuda.

Autor: Claudia | Fecha: Mar 10, 2015.

hola buenas tardes una pregunta como se haria un programa en windows form application de visual studio 2012 en el cual una cadena te de una palabra al reves?

Autor: juan | Fecha: Mar 17, 2016.

Escribe tu comentario

Requerido.

Requerido. No público.

Si tienes alguno.