.NET ヘルプ

C# リバース文字列 (開発者向けの動作方法)

更新済み 6月 6, 2024
共有:

イントロダクション

文字列操作はプログラミングの基本的な側面であり、一般的なタスクの一つに入力文字列を逆転させることがあります。 C#には、このタスクを達成する方法がいくつかあり、例えばwhileループがあります。それぞれに利点、欠点、および最適な使用例があります。 この記事では、C#で文字列 str または文字配列を逆にするためのさまざまな方法について、異なるシナリオや特殊なケースのコード例とともに探討します。 また、優れたPDF生成ライブラリである IronPDF を紹介します。 IronPDF から アイアンソフトウェア.

組み込み関数の使用

C# には文字列操作のためのいくつかの組み込み関数があり、そのうちの一つが Array.Reverse です。()、文字列を表す文字の配列やchar配列を逆転させるために使用できます。 逆メソッドのコード例は以下の通りです:

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ライブラリは、アプリケーションを実行するためにライセンスが必要です。 詳細情報は次のサイトをご覧ください ライセンスページ.

トライアルライセンスは、以下のサイトから取得できます トライアルライセンスページ.

以下にappSettings.jsonファイルにキーを貼り付けてください。

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

結論

C# で文字列を逆にすることは、さまざまなアプローチや考慮事項がある一般的なプログラミングタスクです。 組み込み関数、StringBuilder、または再帰メソッドのいずれを好むかにかかわらず、各アプローチにはそれぞれ利点、欠点、および最適な使用ケースがあります。 これらのメソッドを理解し、エッジケースを考慮することで、C#で特定の要件に適した方法で文字列を逆にすることが効果的にできます。 パフォーマンス、メモリ使用量、および特殊文字の処理に基づいて、要件に最も適した方法を選択してください。

Iron SoftwareのC#用 IronPDFライブラリを使用すると、開発者は最新のアプリケーションを開発するための高度なスキルを習得できます。

< 以前
Xdocument C#(開発者向けの動作方法)
次へ >
C# リンクドリスト (開発者向けの仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >