👋

C# 文字列操作まとめ

2022/09/04に公開

Stringクラス

C#で文字列データを扱うにはStringクラスを利用します。
Stringクラスには文字列操作の便利な機能がたくさん用意されています。
その他のクラスも含めて文字列操作によく使うと思われる機能と利用例をまとめます。

インスタンス作成

String型変数を宣言して値を設定します。
通常は文字列中の「\」はエスケープ文字として認識されますが、文字列の前に「@」をつけるとエスケープ文字として認識されなくなります。
パスを文字列として格納するときに便利です。

string str1 = "string test.";
Console.WriteLine(str1);                // string test.
string str2 = "C:\\hogehoge\\fugafuga";
Console.WriteLine(str2);                // C:\hogehoge\fugafuga
string str3 = @"C:\hogehoge\fugafuga";
Console.WriteLine(str3);                // C:\hogehoge\fugafuga

切り出し

Substringメソッドを使用することで文字列インスタンスから部分文字列を切り出すことができます。

string Substring(int start, int end);
start  : 切り出し開始インデックス
end    : 切り出す文字数
return : 切り出された部分文字列

二つめの引数は省略可能です。省略した場合は一つめの引数で指定されたインデックスから文字列の最後までを切り出します。

string str1 = "abcdefgh";
string str2 = str1.Substring(2, 3);
Console.WriteLine(str2);            // cde
string str3 = str1.Substring(4);
Console.WriteLine(str3);            // efgh

連結

+演算子を使用して文字列を連結することができます。
また、Concatメソッドでも連結が可能です。

string Concat(string str1, string str2);
str1    : 連結する文字列1つめ
str2    : 連結する文字列2つめ
return  : 連結された文字列

引数の連結する文字列は3つ以上でも指定可能です。

string str1 = "hel";
string str2 = "lo";
string str3 = str1 + str2;
Console.WriteLine(str3);            // hello

string str4 = "pud";
string str5 = "ding";
string str6 = string.Concat(str4, str5);
Console.WriteLine(str6);            // pudding

分割

Splitメソッドで区切り文字を指定して分割できます。

string[] Split(char sep);
sep     : 区切り文字
return  : 区切り文字で分割された文字列
string str1 = "dog,cat,bird";
string[] strs = str1.Split(',');

foreach(string str2 in strs)
{
    Console.WriteLine(str2);
    // dog
    // cat
    // bird
}

比較

==演算子、Equalsメソッド、Compareメソッドで文字列の比較ができます。
==演算子、Equalsメソッドは文字列が一致するかを比較、Compareメソッドは文字列の順序を比較します。

bool Equals(string str1, string str2);
str1    : 比較する文字列1
str2    : 比較する文字列2
return  : true 文字列が一致
          false 文字列が不一致

int Compare(string str1, string str2);
str1    : 比較する文字列1
str2    : 比較する文字列2
return  : 0より小さい値 文字列1は文字列2より前
          0            文字列1と文字列2が一致
          0より大きい値 文字列1は文字列2より後
string str1 = "kuroneko";
string str2 = "kuroneko";
string str3 = "sironeko";
Console.WriteLine(str1 == str2);                // True
Console.WriteLine(Equals(str1, str3));          // False
Console.WriteLine(string.Compare(str1, str3));  // -1

検索

Containsメソッドで文字列中に指定の文字列が含まれるかを検索できます。
IndexOfメソッドを使用すると、指定の文字列が始まる位置を取得できます。

bool Contains(string str1);
str1    : 検索する文字列
return  : true 文字列が含まれる
          false 文字列が含まれない

int IndexOf(string str);
str1    : 検索する文字列
return  : 0から始まるインデックス 検索する文字列が始まるインデックス
          -1 検索する文字列が含まれない
string str1 = "aaatoribbb";
Console.WriteLine(str1.Contains("tori"));       // True
Console.WriteLine(str1.IndexOf("tori"));        // 3
Console.WriteLine(str1.IndexOf("inu"));         // -1

置換

Replaceメソッドを使用すると文字列中に含まれる特定の文字列を指定した文字列に置き換えることができます。

string Replace(string old, string new);
old     : 置換される文字列
new     : oldを置換する文字列
return  : 置換後の文字列
string str1 = "sibainu";
string str2 = str1.Replace("siba", "akita");
Console.WriteLine(str2);                        // akitainu

長さ取得

lengthプロパティで文字列の長さが取得できます。
取得できるのはバイト数ではなく文字数です。
1バイト文字でもマルチバイト文字でも1文字として扱われます。

string str1 = "sibainu";
string str2 = "柴犬";
Console.WriteLine(str1.Length);                 // 7
Console.WriteLine(str2.Length);                 // 2

文字列⇒数値、数値⇒文字列変換

文字列で表現されている数値を数値型に変換するにはParseメソッドを使用します。
逆に数値型のデータを文字列型に変換する場合はToStringメソッドを使用します。

string str1 = "111";
int num2 = int.Parse(str1);
Console.WriteLine(num2);                        // 111

int num = 222;
string str2 = num.ToString();                   // 222
Console.WriteLine(str2);

トリミング

Trimメソッドで文字列の先頭、および末尾の空白文字、または指定した文字を削除できます。
TrimStartメソッドを使えば文字列の先頭のみ、TrimEndメソッドを使えば文字列の末尾のみ削除できます。

string Trim(char ch);
ch      : トリミングする文字
return  : トリミング後の文字列

string TrimStart(char ch);
ch      : トリミングする文字
return  : トリミング後の文字列

string TrimEnd(char ch);
ch      : トリミングする文字
return  : トリミング後の文字

引数のトリミングする文字列を省略した場合はスペース(半角、全角両方)が対象となります。

string str1 = "   star   ";
string str2 = str1.Trim();
Console.WriteLine(str2);                        // star

string str3 = "aaasunaaa";
string str4 = str3.TrimStart('a');
Console.WriteLine(str4);                        // sunaaa

string str5 = "BBBmoonBBB";
string str6 = str5.TrimEnd('B');
Console.WriteLine(str6);                        // BBBmoon

Discussion