C#でのstring型の仕様・使い方についてわかりやすく詳しく解説

C#プログラミングにおいて、文字列を扱うためのデータ型であるstring型は非常に重要です。

しかし、初心者にとってはその使い方がわかりづらいこともあります。

そこで本記事では、string型の基本的な仕様や使い方をわかりやすく解説します。

C#プログラミング初心者の方はぜひ参考にしてください。

目次

string型とは

string型は、C#で文字列を扱うためのデータ型です。

文字列とは、複数の文字が連なったものであり、例えばHello, World!1234といったものが該当します。

string型の宣言・初期化方法

C#では、string型を宣言する方法がいくつかあります。

直接文字列を代入する方法

string str = "Hello, World!";

上記のように、変数名の後ろに=を付けて直接文字列を代入することで、宣言と同時に変数の初期化ができます。

コンストラクタを使用する方法

string str = new string('A', 5);

上記のように、new演算子とコンストラクタを使用することでも宣言と同時に初期化を行えます。

上記の例だと、指定した文字Aを5文字繰り返したAAAAAで初期化されます。

StringBuilderクラスを使用する方法

StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append(", ");
sb.Append("World!");
string str = sb.ToString();

上記のように、StringBuilderクラスなどを使用して、複数の文字列を結合してからstring型に変換することもできます。

これらの方法で宣言された変数はすべて同じstring型です。

string型の基本的な操作

続いては、string型の基本的な操作について解説します。

文字列の連結

複数の文字列を連結する場合、+演算子を使用します。

例えば、以下のように記述することができます。

string str1 = "Hello";
string str2 = "World";
string result = str1 + " " + str2;
Console.WriteLine(result); // Hello World

また、$マークを使った式展開も可能です。

以下は同じ結果が得られます。

string str1 = "Hello";
string str2 = "World";
string result = $"{str1} {str2}";
Console.WriteLine(result); // Hello World

文字列の比較

文字列同士を比較する場合、==演算子やEqualsメソッドを使用します。

例えば、以下のように記述することができます。

string str1 = "Hello";
string str2 = "World";
if (str1 == "Hello")
{
    Console.WriteLine("str1 is equal to 'Hello'");
}
if (str1.Equals(str2))
{
    Console.WriteLine("str1 is equal to str2");
}
str1 is equal to 'Hello'

文字列の検索

ある文字列内に特定の文字列が含まれているかどうかを調べる場合、ContainsメソッドやIndexOfメソッドを使用します。

例えば、以下のように記述することができます。

string sentence = "This is a pen.";
if (sentence.Contains("pen"))
{
    Console.WriteLine("The sentence contains 'pen'.");
}
int index = sentence.IndexOf("is");
Console.WriteLine($"The index of 'is' is {index}."); // The index of 'is' is 2.

文字列の切り出し

ある文字列から一部分だけ取り出す場合、Substringメソッドを使用します。

例えば、以下のように記述することができます。

string sentence = "This is a pen.";
string subSentence = sentence.Substring(5, 7);
Console.WriteLine(subSentence); // is a pe

このコードは5文字目のiから7文字分抽出してsubSentenceに代入しています。

このように、stiringクラスには様々なメソッドが用意されているため、効率よく文字列を操作することができます。

string型のフォーマット

C#では文字列を任意のフォーマットに従って文字列を生成することが可能です。

文字列のフォーマット

文字列をフォーマットする場合、以下のように書式指定子を使用します。

string.Format("書式指定子", 引数1, 引数2, ...);

例えば、「こんにちは、山田さん」という文字列を作成する場合は、以下のように書きます。

string name = "山田";
string message = string.Format("こんにちは、{0}さん", name);
Console.WriteLine(message); // 結果:こんにちは、山田さん

上記の例では、{0}という書式指定子が使用されています。

{0}は引数1(name)で置き換わります。

複数の引数がある場合は、{1}``{2}といったように番号を振って指定します。

数値のフォーマット

次に、数値をフォーマットする方法です。

以下は整数値を3桁区切りで表示する例です。

int num = 123456789;
string formattedNum = string.Format("{0:#,0}", num);
Console.WriteLine(formattedNum); // 結果:123,456,789

上記の例では、#,0という書式指定子が使用されています。

#は数字があれば表示し、0は数字がなければ0と表示します。

,は3桁区切りでカンマを表示します。

また、%Eといった書式指定子もあります。

日付のフォーマット

最後に日付をフォーマットする方法です。

DateTime.Nowというメソッドで現在時刻を取得し、以下のように書式指定子を使用して日付・時刻情報を取得します。

DateTime now = DateTime.Now;
string formattedDate = string.Format("{0:yyyy/MM/dd HH:mm:ss}", now);
Console.WriteLine(formattedDate); // 結果:2022/01/01 12:34:56

上記の例では、yyyy/MM/dd HH:mm:ssという書式指定子が使用されています。

yyyyは年(4桁)、 MMは月(2桁)、 ddは日(2桁)、 HH:mm:ssは時刻(24時間表記)と分・秒(2桁)です。

他にも様々な書式指定子がありますので、必要に応じて調べてみるといいでしょう!

目次