Métodos de Strings en C#: Uso y Ejemplos Prácticos
Bienvenida o bienvenido a esta clase donde profundizaremos en los métodos de C#, específicamente en los métodos de strings.
Los métodos en C#
Un método es un bloque de código que contiene varias instrucciones que podemos ejecutar las veces que necesitemos. Son de gran ayuda cuando tienes que hacer lo mismo varias veces en un mismo programa para no repetir el mismo código una y otra vez.
En la clase anterior conocimos cómo invocar un método y utilizarlo cuantas veces necesitemos para realizar acciones específicas en nuestro programa. Ahora veamos algunos de estos métodos para el manejo de strings.
Métodos de strings
using System;publicclassProgram{publicstaticvoidMain(){ string ClassTopic="Métodos de strings"; string School="Platzi";Console.WriteLine("Estoy aprendiendo de "+ClassTopic+" en "+School+".");}}
En la pieza de código anterior puedes ver un pequeño programa con dos variables tipo string y su impresión. Para este tipo de variables podemos usar una gran cantidad de métodos predefinidos dentro de la biblioteca estándar de C#.
Utilicemos estas dos variables strings para conocer algunos de ellos.
Sirve para comparar el contenido de dos strings. Si son iguales devuelve 0 para true y si son diferentes retorna 1 para false. En este caso como School y SchoolClone son strings idénticos devolverá un 0. ¿Qué crees que se imprima en la primera línea?
Contains()
Console.WriteLine(School.Contains("Pla"));
Retorna True si el string contiene los caracteres que se pongan en los argumentos del método.
EndsWith()
Console.WriteLine(School.EndsWith("zi"));
Similar a Contains(), pero para comparar si los caracteres están al final del string.
StartsWith()
Console.WriteLine(School.StartsWith("Pl"));
Funciona de la misma manera que EndsWith(), pero en este caso comprueba si empieza con una serie de caracteres indicados.
Equals()
Console.WriteLine(School.Equals(SchoolClone));
Funciona de forma parecida a CompareTo(), pero para indicar si el contenido de ambos strings retorna True o False.
IndexOf()
Console.WriteLine(School.IndexOf("a"));
Regresa la posición dentro del string del carácter indicado en el argumento.
Convierten el string en todas letras minúsculas o mayúsculas.
Insert()
Console.WriteLine(School.Insert(6," es educación online efectiva"));
Inserta un nuevo string dentro de otro en la posición indicada dentro de los argumentos. En este caso es en 6 que es la posición después de la última letra de “Platzi”.
LastIndexOf()
Console.WriteLine(ClassTopic.LastIndexOf("s"));
Regresa la posición de la última vez que aparece el carácter. En este caso la letra “s” aparece varias veces en el string y así podemos notar cómo devuelve la última posición en la que aparece.
Remove()
Console.WriteLine(ClassTopic.Remove(6));
Elimina los caracteres del string a partir de la posición que le indiquemos hasta el final.
Replace()
Console.WriteLine(ClassTopic.Replace("s","z"));
Reemplaza todos los caracteres por otro indicado. En este caso todas las “s” serán cambiadas por “z”.
Este es un caso especial donde creamos un nuevo string donde guardamos el string separado en trozos por la letra indicada en los argumentos del método. Para este caso se separa por la letra “s” en 3 trozos que son los que imprimimos.
Substring()
Console.WriteLine(ClassTopic.Substring(2,10));
Devuelve un substring o trozo de string de acuerdo a las posiciones indicadas en los argumentos.
ToCharArray()
School.ToCharArray();
Convierte el string en un arreglo de caracteres.
Trim()
string TextWithSpaces=" hola, había espacios al principio y al final ";Console.WriteLine(TextWithSpaces.Trim());
Elimina espacios al principio y al final de un string.
Tu reto
Ya conoces varios de los métodos que puedes utilizar con strings. Estos son los más comunes, pero existen unos más.
Como reto de esta clase crea un programa donde emplees por lo menos 5 de estos métodos de strings o de algún otro que investigues. Pon a volar tu creatividad y comparte en los comentarios el programa que creaste.
Te veo en la próxima donde obtendrás el superpoder de crear tus propios métodos y utilizarlos cuando los necesites.
Muchas gracias por su aporte. Gracias a eso logré hacer la implementación en este programa. No tiene sentido, pero sirve para practicar.
using System;namespace SplitExample{ internal classProgram{staticvoidMain(string[] args){ #region Grupo_de_PersonasConsole.WriteLine("--------- Grupo_de_Personas -----------\n\n");Console.WriteLine("Ingrese los nombres de las personas separadas por una '/' \n"); string personas =Console.ReadLine(); string[] personasArchivadas = personas.Split(newchar[]{'/'});//Separa a las personas seguna la separacion de la barraConsole.WriteLine("");for(int i =0; i < personasArchivadas.Length; i++){Random random =newRandom(); int dinero = random.Next(0,10000); int numeroPersona = i +1;//Esto es para que no haya una persona numero 0.Console.WriteLine("Persona numero "+ numeroPersona +": "+ personasArchivadas[i].Trim().ToUpper().Insert(0,"Argentinx ")+" tiene $"+ dinero);} #endregion Grupo_de_Personas}}}
El metodo de split está medio raro jaja
A mi también me parece muy raro pero investigando entendí mejor su funcionamiento y en que tipo de ocasiones uno puede utilizar ese tipo de método.
Pero hablando de este método de una manera más sencilla, si utilizamos ese método, si lo utilizamos sin pasarle ningún parámetro en los paréntesis, divide la cadena de caracteres tomando de referencia los espacios para guardarlo en un arreglo.
Utilice tu mismo ejemplo para demostrar lo ultimo explicado.
La salida está correcta, está dividiendo por la letra 'o', pero la salida se ve extraña es por que se ven los espacios en blanco, ya que son un caracter también. te recomiendo que hagas el split por el espacio en blanco y se apreciará mejor
string Clasedeprueba="Luis Gerardo Coronado Rodriguez";Console.WriteLine();Console.WriteLine(Clasedeprueba); string[] split =Clasedeprueba.Split(newchar[]{' '});for(int i =0; i < split.Length; i++){Console.WriteLine(split[i]);}
Me parece extraño el método CompareTo, es decir, retorna 0 para true y 1 para false, cuando normalmente se asocia al 0 con false y 1 con true
En la documentación oficial de Microsoft aparece la siguiente advertencia:
Precaución
El CompareTo método se diseñó principalmente para su uso en operaciones de ordenación o alfabética. No se debe usar cuando el propósito principal de la llamada al método es determinar si dos cadenas son equivalentes. Para determinar si dos cadenas son equivalentes, llame al Equals método .
En mi caso devuelve -1
Un aporte, cuando se utiliza el método Split(), si queremos separar por un caracter, podemos pasar el caracter directamente con comillas simples, de esta manera:
string information ="Gonzalo,21,Chile";string[] split = information.split(',');Console.WriteLine(split[0]);Console.WriteLine(split[1]);Console.WriteLine(split[2]);
Hola , hay un detalle con la lectura ,no se muestra la lectura solo su icono
Hola ART,
La lectura está lista, puedes regresar a la clase para continuar con tu aprendizaje.
Buenas no hay ningún documento adjunto para realizar la lectura.
Ya el documento aparece en el curso.
Es verdad, la lectura no esta colocada, aparece vacia
Hola Josue.
Ya está la lectura de esta clase para que puedas continuar con el curso.
Saludos
Clone
string food ="La comida menxicana es la mejor"; string cloneString = food.Clone().ToString();Console.WriteLine(cloneString); string s ="You lose your keys. You lose your pass in."; string[] subs = s.Split(' ','.');//Omitiendo los puntos, caracter delimitadorforeach(var sub in subs){Console.WriteLine($"Substring: "+ sub);}//Omitiendo las cadenas vacias char[] separators =newchar[]{' ','.'}; string[] subsClean = s.Split(separators,StringSplitOptions.RemoveEmptyEntries);foreach(var sub in subsClean){Console.WriteLine($"Substrins with remove empty entries: "+ sub);} char[] arrayChar = food.ToCharArray();Console.WriteLine(arrayChar); int cont =0;for(int i =0; i < arrayChar.Length; i++){if(arrayChar[i]=='a'){ cont++;}}Console.WriteLine($"The word 'a' is repeat : "+ cont);
Por lo que he podido apreciar hay varios módulos de este curso que se encuentran vacíos, creo que eso puede denigrar el proceso de aprendizaje, es posible que puedan habilitar la información de los mismos?.
¡Hola!
Muchas gracias por reportar el problema, estaré revisando el curso para resolver el problema de las lecturas. Ya puedes regresar a la clase de Métodos de strings para hacer la lectura.
//String normalstring ClassTopic="Metodos de Strings";string School="Platzi";//Clonestring SchoolClone=School.Clone().ToString();//Splitstring student ="Laura Valentina Bernate Gordillo";string[] subs = student.Split(' ');Console.WriteLine("*----------- 1 String normal: --------------*");Console.WriteLine("Estoy aprendiendo "+ClassTopic+" en "+School+".");Console.WriteLine();Console.WriteLine("*-------------- 2 Clone() ------------------*");Console.WriteLine("Se hace un clon de la palabra Platzi: "+SchoolClone);Console.WriteLine();Console.WriteLine("*---- 3 CompareTo() True = 0, False = 1 ----*");Console.WriteLine("Compara ´Metodos de Platzi´ con ´Platzi´ Resultado es : "+ClassTopic.CompareTo(School));Console.WriteLine("Compara ´Platzi´ con el con de ´Platzi´ Resultado es : "+School.CompareTo(SchoolClone));Console.WriteLine();Console.WriteLine(" 4 Contains() ");Console.WriteLine("Retorna true si el string contiene los caracteres: ");Console.WriteLine("La string School = Platzi contiene la palabra Pla : "+School.Contains("Pla"));Console.WriteLine("La string School = Platzi contiene la palabra Ga : "+School.Contains("Ga"));Console.WriteLine();Console.WriteLine(" 5 EndWith() - 6 StartsWith() ");Console.WriteLine("Platzi termina con zi: "+School.EndsWith("zi"));Console.WriteLine("Platzi empieza con Pl: "+School.StartsWith("Pl"));Console.WriteLine("Platzi empieza con Ga: "+School.StartsWith("Ga"));Console.WriteLine();Console.WriteLine(" 7 IndexOf ");Console.WriteLine("La posicion dentro del string en el caracter Platzi es : "+School.IndexOf("a"));Console.WriteLine();Console.WriteLine(" 8 ToLower() - ToUpper() ");Console.WriteLine("Letras en minusculas : "+ClassTopic.ToLower());Console.WriteLine("Letras en mayusculas : "+ClassTopic.ToUpper());Console.WriteLine();Console.WriteLine(" 9 Insert() ");Console.WriteLine(School.Insert(6," Es una educación virtual "));Console.WriteLine();Console.WriteLine(" 13 Slipt() ");Console.WriteLine("Nombre del estudiante = "+student);foreach(var sub in subs){Console.WriteLine($"Substring: {sub}");}
Este es el código de los diferentes ejemplos de los métodos string de la lectura.
Nota: Para el ejemplo de ToCharArray() se necesito un ejemplo mejor que el que se muestra. Ahí lo modifique un poco , chéquenlo y me dicen que opinan.
staticvoidMain(string[] args){//En la pieza de código anterior puedes ver un pequeño programa con dos variables tipo string y su impresión.//Para este tipo de variables podemos utilizar una gran cantidad de métodos predefinidos dentro de la biblioteca estándar de C#.//Utilicemos estas dos variables strings para conocer algunos de ellos. string ClassTopic="Métodos de strings"; string School="Platzi";Console.WriteLine("Estoy aprendiendo de "+ClassTopic+" en "+School+".");//Clone()//El método Clone() crea un clon exacto de un string en una variable de tipo objeto. Por ello es necesario convertirlo a string utilizando ToString().Console.WriteLine("\n-----------------");Console.WriteLine("Clone() \n"); string SchoolClone=School.Clone().ToString();Console.WriteLine(SchoolClone);Console.WriteLine("-----------------");//CompareTo()//Sirve para comparar el contenido de dos strings.//Si son iguales devuelve 0 para true y si son diferentes retorna 1 para false. En este caso como School y SchoolClone son strings idénticos devolverá un 0.//¿Qué crees que se imprima en la primera línea?Console.WriteLine("-----------------");Console.WriteLine("CompareTo() \n");Console.WriteLine(ClassTopic.CompareTo(School));Console.WriteLine(School.CompareTo(SchoolClone));Console.WriteLine("-----------------");//Contains()//Retorna True si el string contiene los caracteres que se pongan en los argumentos del método.Console.WriteLine("-----------------");Console.WriteLine("Contains() \n");Console.WriteLine(School.Contains("lat"));Console.WriteLine("-----------------");//EndsWith()//Similar a Contains(), pero para comparar si los caracteres están al final del string.Console.WriteLine("-----------------");Console.WriteLine("EndsWith() \n");Console.WriteLine(School.EndsWith("zi"));Console.WriteLine("-----------------");//StartsWith()//Funciona de la misma manera que EndsWith(), pero en este caso comprueba si empieza con una serie de caracteres indicados.Console.WriteLine("-----------------");Console.WriteLine("StartsWith() \n");Console.WriteLine(School.StartsWith("Pl"));Console.WriteLine("-----------------");//Equals()//Funciona de forma parecida a CompareTo(), pero para indicar si el contenido de ambos strings retorna True o False.Console.WriteLine("-----------------");Console.WriteLine("Equals() \n");Console.WriteLine(School.Equals(SchoolClone));Console.WriteLine("-----------------");//IndexOf()//Regresa la posición dentro del string del carácter indicado en el argumento.Console.WriteLine("-----------------");Console.WriteLine("IndexOf() \n");Console.WriteLine(School.IndexOf("a"));Console.WriteLine("-----------------");//ToLower() y ToUpper()//Convierten el string en todas letras minúsculas o mayúsculas.Console.WriteLine("-----------------");Console.WriteLine("ToLower() y ToUpper() \n");Console.WriteLine(ClassTopic.ToLower());Console.WriteLine(ClassTopic.ToUpper());Console.WriteLine("-----------------");//Insert()//Inserta un nuevo string dentro de otro en la posición indicada dentro de los argumentos.//En este caso es en 6 que es la posición después de la última letra de “Platzi”.Console.WriteLine("-----------------");Console.WriteLine("Insert() \n");Console.WriteLine(School.Insert(6," es educación online efectiva"));Console.WriteLine("-----------------");//LastIndexOf()//Regresa la posición de la última vez que aparece el carácter.//En este caso la letra “s” aparece varias veces en el string y así podemos notar cómo devuelve la última posición en la que aparece.Console.WriteLine("-----------------");Console.WriteLine("LastIndexOf() \n");Console.WriteLine(ClassTopic.LastIndexOf("s"));Console.WriteLine("-----------------");//Remove()//Elimina los caracteres del string a partir de la posición que le indiquemos hasta el final.Console.WriteLine("-----------------");Console.WriteLine("Remove() \n");Console.WriteLine(ClassTopic.Remove(6));Console.WriteLine("-----------------");//Replace()//Reemplaza todos los caracteres por otro indicado. En este caso todas las “s” serán cambiadas por “z”.Console.WriteLine("-----------------");Console.WriteLine("Replace() \n");Console.WriteLine(ClassTopic.Replace("s","z"));Console.WriteLine("-----------------");//Split()//Este es un caso especial donde creamos un nuevo string donde guardamos el string separado en trozos por la letra indicada en los argumentos del método.//Para este caso se separa por la letra “s” en 3 trozos que son los que imprimimos.Console.WriteLine("-----------------");Console.WriteLine("Split() \n"); string[] split =ClassTopic.Split(newchar[]{'s'});Console.WriteLine(split[0]);Console.WriteLine(split[1]);Console.WriteLine(split[2]);Console.WriteLine("-----------------");//Substring()//Devuelve un substring o trozo de string de acuerdo a las posiciones indicadas en los argumentos.Console.WriteLine("-----------------");Console.WriteLine("Substring() \n");Console.WriteLine(ClassTopic.Substring(2,10));Console.WriteLine("-----------------");//ToCharArray()//Convierte el string en un arreglo de caracteres.Console.WriteLine("-----------------");Console.WriteLine("ToCharArray() \n"); char[] arreglo; arreglo =School.ToCharArray();Console.WriteLine(arreglo[0]);Console.WriteLine(arreglo[1]);Console.WriteLine(arreglo[2]);Console.WriteLine(arreglo[3]);Console.WriteLine(arreglo[4]);Console.WriteLine(arreglo[5]);Console.WriteLine("-----------------");//Trim()//Elimina espacios al principio y al final de un string.Console.WriteLine("-----------------");Console.WriteLine("Trim() \n"); string TextWithSpaces=" hola, había espacios al principio y al final ";Console.WriteLine(TextWithSpaces.Trim());Console.WriteLine("-----------------");}
Consola:
Gracias por compartirlo.
Para que el ToCharArray() se ejecute debemos usar un for.
<Console.WriteLine("\nToCharArray()");char[] chars =School.ToCharArray();for(int i =0; i < chars.Length; i++)Console.WriteLine(chars[i]);>
He tratado de adjuntar esto junto con la pregunta pero no he podido
Creo que no declaraste ni le diste valor a una variable que se llame 'school', en tu código solo veo declarado schoolClone y cuando tratas de clonar school en schoolClone marca error por que la variable school no existe.
string School="VideogameSchool";//Esta seria la linea que te faltastring SchoolClone=School.Clone().ToString();Console.WriteLine(SchoolClone);
Puede alguien ayudarme tengo version Visual Studio 2022 y he tratado de seguir métodos como el de Clone() o CompareTo() y no me sale error de que la clase school no existe. Será por mi versión de Visual Studio?
Podrías mostrarnos tu código?
Una duda, el modulo dice que el metodo substring devuelve un substring o trozo de string de acuerdo a las posiciones indicadas en los argumentos, Sin embargo no cuenta la posicion cero. ¿Los strings se cuentan de 1 a posicion maxima? pues coloco de 0 a 1 y solo imprime la M pero cuando coloco de 1 a 2 me imprime dos letras.
<namespace proyecto
{classMainClass{publicstaticvoidMain(string[] args){// Metodos string ClassTopic="Metodos de stringS"; string School="Platzi";// Metodo Substring()Console.WriteLine("Metodo Substring()\n");Console.WriteLine(ClassTopic.Substring(0,1));Console.WriteLine(ClassTopic.Substring(1,2));}}}>
cómo puedo marcar esta clase como favorita?
¡Hola! :D
Actualmente en la plataforma no esta esta función como tal, pero puedes hacerlo desde tu navegador dandole a la estrellita en la barra de direcciones y marcandola como favorita.
gracias por tus comentarios @joalinpineda, esperemos que el gran #PlatziTeam habilite esta opción para esta clase....
muchos éxitos colega !!!
ejemplo basico de registro de usuario:
namespace basescsahrp
{publicclassregistrarusuarios{publicvoidregistrarusuario(){List<string> personas =newList<string>();List<string> edades =newList<string>(); int terminar; int contador =0;do{ contador++;Console.WriteLine("Nombre del usuario"); personas.Add(Console.ReadLine());Console.WriteLine(" ");Console.WriteLine("edad"); edades.Add(Console.ReadLine());Console.WriteLine("Desea registrar un nuevo usuario: 1:YES / 2:NO "); terminar =Convert.ToInt32(Console.ReadLine());}while(terminar ==1);Console.WriteLine("Gracias por usar nuestro servicio!");Console.WriteLine(" ");Console.WriteLine($"la cantidad de usuarios fueron: {contador} ");Console.WriteLine(" ");for(int i =0; i < personas.Count; i++){Console.WriteLine($"El nombre del usuario es: {personas[i].ToUpper().Trim()} con : {edades[i].Insert(edades[i].Length, " años")}");}}}}```namespace basescsahrp
{ publicclassregistrarusuarios { publicvoidregistrarusuario() { List\<string> personas =newList\<string>(); List\<string> edades =newList\<string>();  int terminar;  int contador =0; do {  contador++; Console.WriteLine("Nombre del usuario");  personas.Add(Console.ReadLine()); Console.WriteLine(" "); Console.WriteLine("edad");  edades.Add(Console.ReadLine()); Console.WriteLine("Desea registrar un nuevo usuario: 1:YES / 2:NO ");  terminar =Convert.ToInt32(Console.ReadLine()); }while(terminar ==1); Console.WriteLine("Gracias por usar nuestro servicio!"); Console.WriteLine(" "); Console.WriteLine($"la cantidad de usuarios fueron: {contador} "); Console.WriteLine(" "); for(int i =0; i < personas.Count; i++) { Console.WriteLine($"El nombre del usuario es: {personas\[i].ToUpper().Trim()} con : {edades\[i].Insert(edades\[i].Length, " años")}"); } } }}
public class Program
{
public static void Main()// este codigo separa frases delimitadas por -
{
Console.WriteLine("Ingrese dos frases separadas por -");
string textPhrase = Console.ReadLine();
Console.WriteLine("Su frase es: "+textPhrase);
Console.WriteLine("Ahora vamos a separar su frase si contiene un -");
int Index = textPhrase.IndexOf("-");
if(Index!=-1){Console.WriteLine("procesando su cadena de frases"); string[] textPhraseArray = textPhrase.Split('-');Console.WriteLine("Su frase separada es:");foreach(string text in textPhraseArray){Console.WriteLine(text.Trim());}Console.WriteLine("Tiene un largo de "+ textPhrase.Length);Console.WriteLine("---------------------------------------------");Console.WriteLine("Ahora vamos a convertir su frase a mayusculas");foreach(string text in textPhraseArray){Console.WriteLine(text.ToUpper().Trim());}Console.WriteLine("---------------------------------------------");Console.WriteLine("Ahora vamos a convertir su frase a minusculas");foreach(string text in textPhraseArray){Console.WriteLine(text.ToLower().Trim());}}else{Console.WriteLine("No con tiene ningun -");}}