Hoy vamos a ver dos maneras de invertir una cadena o string en C#. La primer forma que veremos será para invertir una cadena con métodos que el lenguaje proporciona, y la segunda de una forma más manual.
Esta última forma para invertir una cadena será para aquellos casos en donde alguien nos pide el algoritmo para invertir una cadena sin usar métodos que el lenguaje proporcione.
Invertir cadena en C# con algoritmo propio
El algoritmo es muy sencillo. Creamos una cadena vacía, y recorremos la otra carácter por carácter. En cada iteración anteponemos la letra en la cadena creada inicialmente.
De esta manera podemos invertir la cadena; lo mismo daría recorrer la cadena de derecha a izquierda e ir concatenando cada carácter.
El código es el siguiente:
public static string InvertirManualmente(string cadena){
string cadenaInvertida = "";
// Recorrer cadena letra por letra
foreach(char letra in cadena){
// Anteponer la letra a la cadena invertida
cadenaInvertida = letra + cadenaInvertida;
}
return cadenaInvertida;
}
Invertir cadena convirtiéndola a arreglo e invirtiendo el arreglo
Otro enfoque que no utiliza un algoritmo personalizado o escrito por nosotros es convertir la cadena a un arreglo de caracteres o chars, después invertir ese arreglo con Array.Reverse
y finalmente convertir ese arreglo a cadena.
En pocas palabras, convertimos a arreglo, invertimos el arreglo con el método que C# proporciona y luego lo devolvemos a cadena.
El código es el siguiente:
public static string Invertir(string cadena){
// Convertir a arreglo
char[] cadenaComoCaracteres = cadena.ToCharArray();
// Invertir el arreglo usando métodos incorporados
Array.Reverse(cadenaComoCaracteres);
// Convertir de nuevo el arreglo a cadena
return new string(cadenaComoCaracteres);
}
Los puntos importantes son la llamada a ToCharArray
y Array.Reverse
.
Poniendo todo junto
El siguiente código demuestra y prueba cómo invertir cadenas con C#:
/*
Dos formas de invertir una cadena o string
en C#
@author parzibyte
*/
using System;
class MainClass {
public static void Main (string[] args) {
Console.WriteLine ("Hola mundo");
Console.WriteLine (InvertirManualmente("Hola mundo"));
Console.WriteLine (Invertir("Hola mundo"));
}
public static string InvertirManualmente(string cadena){
string cadenaInvertida = "";
// Recorrer cadena letra por letra
foreach(char letra in cadena){
// Anteponer la letra a la cadena invertida
cadenaInvertida = letra + cadenaInvertida;
}
return cadenaInvertida;
}
public static string Invertir(string cadena){
// Convertir a arreglo
char[] cadenaComoCaracteres = cadena.ToCharArray();
// Invertir el arreglo usando métodos incorporados
Array.Reverse(cadenaComoCaracteres);
// Convertir de nuevo el arreglo a cadena
return new string(cadenaComoCaracteres);
}
}
Muchas gracias, lo adapté a mi conveniencia y logré mi objetivo gracias a ti.