C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で一時変数を使わずに2つの文字列を入れ替える方法

C#プログラミングにおいて、通常は一時変数(テンポラリ変数)を使って2つの文字列の値を入れ替えますが、実は一時変数なしでも文字列の連結とSubstringメソッドを組み合わせることで、同じことが実現できます。

この記事では、その具体的な手順とサンプルコードをわかりやすく解説します。

基本的な考え方

一時変数を使用せずに2つの文字列を入れ替えるには、以下の手順に従います。

ステップ1:2番目の文字列を1番目の文字列に連結する

まず、str2をstr1に連結して、両方の文字列を含む1つの文字列を作成します。

str1 = str1 + str2;

ステップ2:str1の元の部分をstr2に設定する

Substringメソッドを使い、連結後の文字列から元のstr1の部分だけを取り出してstr2に代入します。

str2 = str1.Substring(0, str1.Length - str2.Length);

ステップ3:str2の部分をstr1に設定する

最後に、連結後の文字列から元のstr2の部分だけを取り出して、str1に代入します。

str1 = str1.Substring(str2.Length);

サンプルコード

実際に動作を確認できる完全なサンプルコードは以下の通りです。

using System;

class Demo {

    public static void Main(String[] args) {
        String str1 = "Brad";
        String str2 = "Pitt";

        Console.WriteLine("入れ替え前の文字列");
        Console.WriteLine(str1);
        Console.WriteLine(str2);

        str1 = str1 + str2;

        str2 = str1.Substring(0, str1.Length - str2.Length);
        str1 = str1.Substring(str2.Length);

        Console.WriteLine("入れ替え後の文字列");
        Console.WriteLine(str1);
        Console.WriteLine(str2);
    }
}

実行結果

入れ替え前の文字列
Brad
Pitt
入れ替え後の文字列
Pitt
Brad

処理の流れを詳しく見る

このコードでは、最初に「Brad」と「Pitt」を連結して「BradPitt」という文字列を作ります。次に、全体の長さからstr2の長さを引くことで、元のstr1(「Brad」)の長さが求まり、それをSubstring(0, 4)で取り出してstr2に代入します。この時点でstr2は「Brad」になります。

最後に、Substring(str2.Length)、つまりSubstring(4)によって4文字目以降の「Pitt」を取り出し、str1に代入することで、2つの文字列が完全に入れ替わります。

注意点

C#の文字列は不変(イミュータブル)であるため、この手法では新しい文字列オブジェクトが生成されます。非常に大きな文字列や頻繁な入れ替え処理を行う場合は、パフォーマンスへの影響も考慮するとよいでしょう。また、数値型の場合はXOR演算などを使った同様のテクニックもありますが、文字列の場合は上記のような連結とSubstringを組み合わせる方法が一般的です。

  1. Pythonで2つの変数の値を交換する方法【一時変数あり・なしの2パターン】

    はじめにプログラミングにおいて、2つの変数が持つ値を入れ替える「スワップ(交換)」処理は非常によく使われる基本操作です。この記事では、Pythonで変数を交換する2つの方法を、実際のコード例とともにわかりやすく解説します。方法1:一時変数を使う方法最も古典的で汎用的なのが、もう1つの一時変数(テンポラリ変数)を介して値を入れ替える方法です。他の多くのプログラミング言語でも同様の手法が使われます。>>> x = 10>>> y = 20>>> z = x # x の値を一時変数 z に退避>>> x = y # y

  2. Pythonの正規表現(reモジュール)で2つの文字列を比較する方法

    Pythonでは、標準ライブラリのreモジュールを利用することで、正規表現による文字列の比較や照合を簡単に行えます。最も一般的な方法は、re.search()関数を使って、一方の文字列(パターン)がもう一方の文字列の中に存在するかどうかを調べるアプローチです。 re.search()を使った比較の基本例 以下のコードでは、文字列s1を正規表現パターンとして扱い、それが文字列s2内にマッチするかどうかを判定しています。 import re s1 = Pink Forest s2 = Pink Forrest if bool(re.search(s1, s2)) == True: pr