AYUDA .NET

C# Reverse String (Cómo funciona para desarrolladores)

Actualizado 6 de junio, 2024
Compartir:

Introducción

La manipulación de cadenas es un aspecto fundamental de la programación, y una tarea común es invertir una cadena de entrada. En C#, hay varias formas de realizar esta tarea, como el bucle while, cada una con sus ventajas, desventajas y mejores casos de uso. En este artículo, exploraremos varios métodos para invertir una cadena o matriz de caracteres en C#, junto con ejemplos de código para diferentes escenarios y casos extremos. Además, presentaremos una destacada biblioteca de generación de PDF llamada IronPDF de Iron Software.

1. Uso de las funciones incorporadas

C# proporciona varias funciones integradas para la manipulación de cadenas, y una de ellas es Array.Reverse()que puede utilizarse para invertir una matriz de caracteres o una matriz de caracteres que represente una cadena. He aquí un ejemplo de código del método inverso:

public class Program
{
//  static void main
    public static void Main()
    {
        string original = "AwesomeIronPDF"; //  variable de cadena
    char[] charArray = original.ToCharArray();
    Array.Reverse(charArray);//  cadena estática método inverso 
    string reversed = new string(charArray); //  cadena invertida
    Console.WriteLine(reversed); //  Salida: FDPnorIemosewA
    }
}
public class Program
{
//  static void main
    public static void Main()
    {
        string original = "AwesomeIronPDF"; //  variable de cadena
    char[] charArray = original.ToCharArray();
    Array.Reverse(charArray);//  cadena estática método inverso 
    string reversed = new string(charArray); //  cadena invertida
    Console.WriteLine(reversed); //  Salida: FDPnorIemosewA
    }
}
Public Class Program
'  static void main
	Public Shared Sub Main()
		Dim original As String = "AwesomeIronPDF" '  variable de cadena
	Dim charArray() As Char = original.ToCharArray()
	Array.Reverse(charArray) '  cadena estática método inverso
	Dim reversed As New String(charArray) '  cadena invertida
	Console.WriteLine(reversed) '  Salida: FDPnorIemosewA
	End Sub
End Class
VB   C#

Ventajas

  • Código sencillo y conciso.
  • Utiliza funciones integradas, lo que reduce la necesidad de implementaciones personalizadas.

Desventajas

  • Requiere convertir la cadena en una matriz de caracteres, lo que consume memoria adicional.
  • No es adecuado para situaciones en las que el rendimiento es crítico.

2. Utilizar un `StringBuilder

Otra forma de invertir una cadena en C# es utilizando la clase StringBuilder, que proporciona operaciones eficientes de manipulación de cadenas. Así es como puedes usar StringBuilder para invertir una cadena:

public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; //  variable de cadena
        StringBuilder sb = new StringBuilder();
        for (int i = someText.Length - 1; i >= 0; i--)
        {
            sb.Append(someText[i]);
        }
        string reversed = sb.ToString(); //  variable de cadena invertida
        Console.WriteLine(reversed); //  Salida: FDPnorIemosewA
    }
}
public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; //  variable de cadena
        StringBuilder sb = new StringBuilder();
        for (int i = someText.Length - 1; i >= 0; i--)
        {
            sb.Append(someText[i]);
        }
        string reversed = sb.ToString(); //  variable de cadena invertida
        Console.WriteLine(reversed); //  Salida: FDPnorIemosewA
    }
}
Public Class Program
	Public Shared Sub Main()
		Dim someText As String = "AwesomeIronPDF" '  variable de cadena
		Dim sb As New StringBuilder()
		For i As Integer = someText.Length - 1 To 0 Step -1
			sb.Append(someText.Chars(i))
		Next i
		Dim reversed As String = sb.ToString() '  variable de cadena invertida
		Console.WriteLine(reversed) '  Salida: FDPnorIemosewA
	End Sub
End Class
VB   C#

Ventajas

  • Uso eficiente de la memoria, especialmente para cadenas grandes.
  • Adecuado para situaciones en las que el rendimiento es crucial.

Desventajas

  • Requiere iteración manual sobre los caracteres de la cadena original.
  • Ligeramente más verboso en comparación con el uso de funciones incorporadas.

3. Enfoque recursivo

También se puede utilizar un enfoque recursivo para invertir una cadena en C#. Este método consiste en intercambiar recursivamente los caracteres de ambos extremos de la cadena hasta invertirla por completo. He aquí una aplicación:

public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; //  cadena aleatoria
        string reversed = ReverseString(someText); //  invertir una cadena
        Console.WriteLine(reversed); //  Salida: FDPnorIemosewA
    }
    //  public static cadena método inverso
    public static string ReverseString(string str) 
    {
        if (str.Length <= 1)
            return str;
        return ReverseString(str.Substring(1)) + str[0];
    }
}
public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; //  cadena aleatoria
        string reversed = ReverseString(someText); //  invertir una cadena
        Console.WriteLine(reversed); //  Salida: FDPnorIemosewA
    }
    //  public static cadena método inverso
    public static string ReverseString(string str) 
    {
        if (str.Length <= 1)
            return str;
        return ReverseString(str.Substring(1)) + str[0];
    }
}
Public Class Program
	Public Shared Sub Main()
		Dim someText As String = "AwesomeIronPDF" '  cadena aleatoria
		Dim reversed As String = ReverseString(someText) '  invertir una cadena
		Console.WriteLine(reversed) '  Salida: FDPnorIemosewA
	End Sub
	'  public static cadena método inverso
	Public Shared Function ReverseString(ByVal str As String) As String
		If str.Length <= 1 Then
			Return str
		End If
		Return ReverseString(str.Substring(1)) + str.Chars(0)
	End Function
End Class
VB   C#

Ventajas

  • Código elegante y conciso.
  • Puede ser útil en escenarios donde la recursividad es preferida o requerida.

Desventajas

  • Puede producirse un desbordamiento de pila para cadenas extremadamente largas debido a las llamadas a funciones recursivas.
  • Menos eficaz en comparación con los enfoques iterativos, especialmente para cadenas grandes.

Casos extremos

Al invertir cadenas, es esencial tener en cuenta los casos extremos para garantizar la solidez y la corrección. Algunos casos extremos a tener en cuenta son:

  • Cadena vacía: Manejo de escenarios donde la cadena de entrada está vacía.
  • Cadena nula: Manejo de escenarios donde la cadena de entrada es nula.
  • Cadenas con caracteres especiales: Garantizar que los caracteres especiales se tratan correctamente durante la inversión.

Generar Documento PDF Usando C# Método Inverso de Cadena

Comience creando una aplicación de consola desde Visual Studio.

C# Invertir cadena (Cómo Funciona Para Desarrolladores): Figura 1 - Aplicación de consola

Indique el nombre y la ubicación del proyecto.

C# Invertir cadena (Cómo funciona para los desarrolladores): Figura 2 - Configuración del proyecto

Seleccione la versión .NET.

C# Invertir cadena (Cómo funciona para los desarrolladores): Figura 3 - Marco de destino

Instale IronPDF en el proyecto creado.

C# Invertir cadena (Cómo funciona para desarrolladores): Figura 4 - IronPDF

También se puede hacer utilizando la siguiente línea de comandos.

dotnet add package IronPdf --version 2024.4.2

Escribe el siguiente código para demostrar la inversión de cadenas.

public class Program
{
    public static void Main()
    {
        var content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>";
        content += "<h2>1. Using Array.Reverse Method</h2>";
        string someText = "AwesomeIronPDF"; //  nueva variable de cadena
        content += $"<p>Input String: {original}</p>";
        char[] charArray = someText.ToCharArray();
        Array.Reverse(charArray);//  cadena estática método inverso 
        string reversed1 = new string(charArray); //  cadena invertida
        Console.WriteLine(reversed1); //  Salida: FDPnorIemosewA
        content += $"<p>output: {reversed1}</p>";
        content += "<h2>2. Using StringBuilder</h2>";
        StringBuilder sb = new StringBuilder();
        content += $"<p>Input String: {original}</p>";
        for (int i = someText.Length - 1; i >= 0; i--)
        {
            sb.Append(original[i]);
        }
        string reversed2 = sb.ToString();
        content += $"<p>output: {reversed2}</p>";
        content += "<h2>3. Using Recursive Approach</h2>";
        content += $"<p>Input String: {someText}</p>";
        string reversed3 = ReverseString(someText);
        Console.WriteLine(reversed3); //  Salida: FDPnorIemosewA
        content += $"<p>output: {reversed3}</p>";
        //  Crear renderizador
        var renderer = new ChromePdfRenderer();
        //  Crear un PDF a partir de una cadena HTML
        var pdf = renderer.RenderHtmlAsPdf(content);
        //  Guardar en un archivo o Stream
        pdf.SaveAs("reverseString.pdf");
    }
    public static string ReverseString(string str)
    {
        if (str.Length <= 1)
            return str;
        return ReverseString(str.Substring(1)) + str[0];
    }    
}
public class Program
{
    public static void Main()
    {
        var content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>";
        content += "<h2>1. Using Array.Reverse Method</h2>";
        string someText = "AwesomeIronPDF"; //  nueva variable de cadena
        content += $"<p>Input String: {original}</p>";
        char[] charArray = someText.ToCharArray();
        Array.Reverse(charArray);//  cadena estática método inverso 
        string reversed1 = new string(charArray); //  cadena invertida
        Console.WriteLine(reversed1); //  Salida: FDPnorIemosewA
        content += $"<p>output: {reversed1}</p>";
        content += "<h2>2. Using StringBuilder</h2>";
        StringBuilder sb = new StringBuilder();
        content += $"<p>Input String: {original}</p>";
        for (int i = someText.Length - 1; i >= 0; i--)
        {
            sb.Append(original[i]);
        }
        string reversed2 = sb.ToString();
        content += $"<p>output: {reversed2}</p>";
        content += "<h2>3. Using Recursive Approach</h2>";
        content += $"<p>Input String: {someText}</p>";
        string reversed3 = ReverseString(someText);
        Console.WriteLine(reversed3); //  Salida: FDPnorIemosewA
        content += $"<p>output: {reversed3}</p>";
        //  Crear renderizador
        var renderer = new ChromePdfRenderer();
        //  Crear un PDF a partir de una cadena HTML
        var pdf = renderer.RenderHtmlAsPdf(content);
        //  Guardar en un archivo o Stream
        pdf.SaveAs("reverseString.pdf");
    }
    public static string ReverseString(string str)
    {
        if (str.Length <= 1)
            return str;
        return ReverseString(str.Substring(1)) + str[0];
    }    
}
Public Class Program
	Public Shared Sub Main()
		Dim content = "<h1>Demonstrate IronPDF with C# LinkedList</h1>"
		content &= "<h2>1. Using Array.Reverse Method</h2>"
		Dim someText As String = "AwesomeIronPDF" '  nueva variable de cadena
		content &= $"<p>Input String: {original}</p>"
		Dim charArray() As Char = someText.ToCharArray()
		Array.Reverse(charArray) '  cadena estática método inverso
		Dim reversed1 As New String(charArray) '  cadena invertida
		Console.WriteLine(reversed1) '  Salida: FDPnorIemosewA
		content &= $"<p>output: {reversed1}</p>"
		content &= "<h2>2. Using StringBuilder</h2>"
		Dim sb As New StringBuilder()
		content &= $"<p>Input String: {original}</p>"
		For i As Integer = someText.Length - 1 To 0 Step -1
			sb.Append(original(i))
		Next i
		Dim reversed2 As String = sb.ToString()
		content &= $"<p>output: {reversed2}</p>"
		content &= "<h2>3. Using Recursive Approach</h2>"
		content &= $"<p>Input String: {someText}</p>"
		Dim reversed3 As String = ReverseString(someText)
		Console.WriteLine(reversed3) '  Salida: FDPnorIemosewA
		content &= $"<p>output: {reversed3}</p>"
		'  Crear renderizador
		Dim renderer = New ChromePdfRenderer()
		'  Crear un PDF a partir de una cadena HTML
		Dim pdf = renderer.RenderHtmlAsPdf(content)
		'  Guardar en un archivo o Stream
		pdf.SaveAs("reverseString.pdf")
	End Sub
	Public Shared Function ReverseString(ByVal str As String) As String
		If str.Length <= 1 Then
			Return str
		End If
		Return ReverseString(str.Substring(1)) + str.Chars(0)
	End Function
End Class
VB   C#

Salida

C# Invertir cadena (Cómo funciona para desarrolladores): Figura 5 - Salida PDF

Licencia (prueba disponible para IronPDF)

La biblioteca IronPDF requiere una licencia para ejecutar aplicaciones. Más información en página de licencias.

Se puede obtener una licencia de prueba en página de licencia de prueba.

Pega la Clave en el archivo appSettings.json de abajo.

{
  "IronPdf.License.LicenseKey" = "The Key Goes Here"
}

Conclusión

Invertir una cadena en C# es una tarea de programación común con varios enfoques y consideraciones. Tanto si prefieres funciones incorporadas, StringBuilder, o métodos recursivos, cada enfoque tiene sus ventajas, desventajas y mejores casos de uso. Si comprende estos métodos y tiene en cuenta los casos extremos, podrá invertir cadenas en C# de forma eficaz y adaptada a sus requisitos específicos. Elija el método que mejor se adapte a sus necesidades en función del rendimiento, el uso de memoria y la gestión de caracteres especiales.

Con la biblioteca IronPDF de Iron Software para operaciones con PDF en C#, los desarrolladores pueden adquirir conocimientos avanzados para desarrollar aplicaciones modernas.

< ANTERIOR
Xdocument C# (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Linked List (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,848,088 Ver licencias >
123