今回は、C#における文字列操作のうち、文字列の後ろからn文字、中間のx~y文字、先頭からn文字など、簡単に文字列を切り出して取得する方法を解説していきます。
StringクラスのSubstringメソッドを使用して切り出す方法
基本的な使い方(中間の文字を切り出す方法)
string oriText = "Hello World!!!";
string resText = oriText.Substring(6, 5);
Console.WriteLine(resText); // 「World」
StringクラスのSubstringメソッドは、その文字列から引数で指定された指定位置から指定文字数までの部分文字列を取得します。上記2行目では、oriTextの6番目(0始まり)から5文字を取得した「World」という部分文字列をresTextに格納しています。
もし「oriText.Substring(6)」のように、引数が1つの場合は指定位置から最後までの部分文字列を取得します。(上記の場合、resTextが「World!!!」になる)
後ろからn文字を切り出す方法
string oriText = "Hello World!!!";
string resText = oriText.Substring(oriText.Length - 8);
Console.WriteLine(resText); // 「World!!!」
その文字列の文字数を取得するStringクラスのLengthプロパティと、指定位置から末尾までの部分文字列を取得する引数1つのSubstringメソッドを組み合わせて「その文字列の文字数 – 切り出す文字数」(=開始位置)を指定することで、文字列の後ろからn文字の部分文字列を取得できます。
ちょっとわかりにくいので上記2行目を図で説明すると、以下のようなイメージです。

先頭から指定した文字まで切り出す方法
string oriText = "Hello World!!!";
string tarText = "World";
string resText = oriText.Substring(0, oriText.IndexOf(tarText));
Console.WriteLine(resText); // 「Hello 」
指定した文字列が最初に見つかった位置の0から始まるインデックス(Index)を取得するStringクラスのIndexOfメソッドとSubstringメソッドを組み合わせると、指定した文字列までの部分文字列を取得することもできます。上記3行目では、Substringメソッドで開始位置に0(=先頭)、取得する文字数に指定した文字列(”World”)の位置が入るようにして、先頭から指定した文字列までの部分文字列を取得しています。どうしてこうなるかは次の図で確認してみてください。

ちなみに、下記のようにIndexOfメソッドの箇所を、指定した文字列が最後に見つかった位置のインデックスを取得するLastIndexOfメソッドに変更すると指定した文字列が最後に見つかった位置までの文字列を取得することも可能です。
string oriText = "Hello WorldWorldWorld!!!";
string tarText = "World";
string resText = oriText.Substring(0, oriText.LastIndexOf(tarText));
Console.WriteLine(resText); // 「Hello WorldWorld」
まとめ
今回は、C#で簡単に文字列を切り出して取得する方法を解説させていただきました。文字列の切り出しでは、色々なメソッドを組み合わせて効率よく取得することが重要です。インデックスの指定など、しっかりと考える必要がありますが、きちんと理解すると柔軟な文字列操作が可能になります。この記事が少しでもみなさまのお力になれると幸いです!