.NET 幫助

C# 字串反轉(開發者指南)

發佈 2024年6月6日
分享:

介紹

字串操作是程式設計中的基本方面,其中一個常見的任務是反轉輸入字串。 在 C# 中,有幾種方法可以完成這個任務,例如 while 迴圈,每種方法都有其優點、缺點和最佳使用案例。 在本文中,我們將探討在 C# 中反轉字串或字元陣列的各種方法,並提供不同情境和邊界案例的代碼範例。 此外,我們將介紹一個出色的 PDF 生成庫,名為IronPDF 來自 Iron Software.

1. 使用內建函數

C#提供了幾個內建函數用於字串操作,其中之一是 Array.Reverse。(),可用來反轉字元陣列或表示字串的字元陣列。 以下是 reverse 方法的程式碼範例:

public class Program
{
// static void main
    public static void Main()
    {
        string original = "AwesomeIronPDF"; // string variable
    char[] charArray = original.ToCharArray();
    Array.Reverse(charArray);// static string reverse method 
    string reversed = new string(charArray); // reversed string
    Console.WriteLine(reversed); // Output: FDPnorIemosewA
    }
}
public class Program
{
// static void main
    public static void Main()
    {
        string original = "AwesomeIronPDF"; // string variable
    char[] charArray = original.ToCharArray();
    Array.Reverse(charArray);// static string reverse method 
    string reversed = new string(charArray); // reversed string
    Console.WriteLine(reversed); // Output: FDPnorIemosewA
    }
}
Public Class Program
' static void main
	Public Shared Sub Main()
		Dim original As String = "AwesomeIronPDF" ' string variable
	Dim charArray() As Char = original.ToCharArray()
	Array.Reverse(charArray) ' static string reverse method
	Dim reversed As New String(charArray) ' reversed string
	Console.WriteLine(reversed) ' Output: FDPnorIemosewA
	End Sub
End Class
VB   C#

優勢

  • 簡單且簡明的程式碼。
  • 利用內建功能,減少自訂實作的需求。

缺點

  • 需要將字串轉換成字元陣列,這會消耗額外的記憶體。
  • 不適用於性能至關重要的情況。

2. 使用 StringBuilder

另一種在 C# 中反轉字串的方法是使用 StringBuilder 類別,它提供高效的字串操作。 以下是使用StringBuilder反轉字串的方法:

public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; // string variable
        StringBuilder sb = new StringBuilder();
        for (int i = someText.Length - 1; i >= 0; i--)
        {
            sb.Append(someText[i]);
        }
        string reversed = sb.ToString(); // reversed string variable
        Console.WriteLine(reversed); // Output: FDPnorIemosewA
    }
}
public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; // string variable
        StringBuilder sb = new StringBuilder();
        for (int i = someText.Length - 1; i >= 0; i--)
        {
            sb.Append(someText[i]);
        }
        string reversed = sb.ToString(); // reversed string variable
        Console.WriteLine(reversed); // Output: FDPnorIemosewA
    }
}
Public Class Program
	Public Shared Sub Main()
		Dim someText As String = "AwesomeIronPDF" ' string variable
		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() ' reversed string variable
		Console.WriteLine(reversed) ' Output: FDPnorIemosewA
	End Sub
End Class
VB   C#

優勢

  • 有效的記憶體使用,特別是對於大型字串。
  • 適用於性能至關重要的情境。

缺點

  • 需要手動遍歷原始字串的字符。
  • 相比於使用內建功能稍微冗長一些。

3. 遞迴方法

在 C# 中也可以使用遞歸方法來反轉字符串。 此方法涉及遞歸地從字符串的兩端交換字符,直到整個字符串被反轉。 這裡是一個實現:

public class Program
{
    public static void Main()
    {
        string someText = "AwesomeIronPDF"; // random string
        string reversed = ReverseString(someText); // reverse a string
        Console.WriteLine(reversed); // Output: FDPnorIemosewA
    }
    // public static string reverse method
    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"; // random string
        string reversed = ReverseString(someText); // reverse a string
        Console.WriteLine(reversed); // Output: FDPnorIemosewA
    }
    // public static string reverse method
    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" ' random string
		Dim reversed As String = ReverseString(someText) ' reverse a string
		Console.WriteLine(reversed) ' Output: FDPnorIemosewA
	End Sub
	' public static string reverse method
	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#

優勢

  • 優雅且簡潔的代碼。
  • 在需要或偏好使用遞歸的情境中可以派上用場。

缺點

  • 由於遞迴函數調用,可能導致極長字串發生堆疊溢出。
  • 與迭代方法相比,特別對於大型字符串,效率較低。

邊緣情況

在反轉字符串時,必須考慮邊緣情況以確保健全性和正確性。 需要考慮的一些邊界情況包括:

  • 空字串:處理輸入字串為空的情況。
  • 空字符串:處理輸入字符串為空的情況。
  • 帶有特殊字符的字串:確保在反轉過程中正確處理特殊字符。

使用 C# 字符串反向方法生成 PDF 文件

首先從 Visual Studio 建立一個控制台應用程式。

C# 字串反轉(開發者使用指南):圖 1 - 主控台應用程式

請提供專案名稱和位置。

C# 反轉字符串(開發人員如何操作):圖 2 - 項目配置

選擇 .NET 版本。

C# 反轉字串(開發人員如何運作):圖 3 - 目標框架

將IronPDF安裝到創建的項目中。

C# 反轉字串(開發者如何運行):圖表 4 - IronPDF

也可以使用以下指令來完成。

dotnet add package IronPdf --version 2024.4.2

編寫以下代碼來展示字串反轉。

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"; // new string variable
        content += $"<p>Input String: {original}</p>";
        char[] charArray = someText.ToCharArray();
        Array.Reverse(charArray);// static string reverse method 
        string reversed1 = new string(charArray); // reversed string
        Console.WriteLine(reversed1); // Output: 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); // Output: FDPnorIemosewA
        content += $"<p>output: {reversed3}</p>";
        // create Renderer
        var renderer = new ChromePdfRenderer();
        // Create a PDF from HTML string
        var pdf = renderer.RenderHtmlAsPdf(content);
        // Save to a file or 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"; // new string variable
        content += $"<p>Input String: {original}</p>";
        char[] charArray = someText.ToCharArray();
        Array.Reverse(charArray);// static string reverse method 
        string reversed1 = new string(charArray); // reversed string
        Console.WriteLine(reversed1); // Output: 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); // Output: FDPnorIemosewA
        content += $"<p>output: {reversed3}</p>";
        // create Renderer
        var renderer = new ChromePdfRenderer();
        // Create a PDF from HTML string
        var pdf = renderer.RenderHtmlAsPdf(content);
        // Save to a file or 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" ' new string variable
		content &= $"<p>Input String: {original}</p>"
		Dim charArray() As Char = someText.ToCharArray()
		Array.Reverse(charArray) ' static string reverse method
		Dim reversed1 As New String(charArray) ' reversed string
		Console.WriteLine(reversed1) ' Output: 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) ' Output: FDPnorIemosewA
		content &= $"<p>output: {reversed3}</p>"
		' create Renderer
		Dim renderer = New ChromePdfRenderer()
		' Create a PDF from HTML string
		Dim pdf = renderer.RenderHtmlAsPdf(content)
		' Save to a file or 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#

輸出

C# 反轉字串(開發人員運作方式):圖 5 - PDF 輸出

許可證(IronPDF 可試用)

IronPDF 程式庫需要授權才能執行應用程式。 更多資訊請參見IronPDF Licensing Information頁面。

測試許可證可以從IronPDF 試用許可證頁面。

將鍵粘貼到以下的 appSettings.json 文件中。

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

結論

在 C# 中反轉字符串是一項常見的程式設計任務,有各種方法和考慮因素。 不論您偏好內建函數、StringBuilder 或遞迴方法,每一種方法都有其優點、缺點及最佳使用情境。 透過瞭解這些方法並考慮邊緣情況,您可以根據具體要求有效地在C#中反轉字串。 根據效能、記憶體使用和特殊字元處理來選擇最適合您需求的方法。

隨著IronPDF 函式庫用於 C# PDF 操作,開發人員可以獲得進階技能以開發現代應用程式。

< 上一頁
Xdocument C#(其運作方式對於開發者)
下一個 >
C# 鏈結串列(開發人員如何使用)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >