C#のString.Substringメソッドで指定範囲の文字列を切り出す

アプリケーションを作成していると、一部の文字列を取り出したい場面もあると思います。
ExcelではLEFT関数やMID関数で指定の文字列を取得できますが、C#ではString.Substringメソッドを使用して取得します。
この記事では、String.Substringの使用方法について解説していきます。大変便利なメソッドなので、ぜひ参考にしてみてください。
- PG
- 姓名から名(下の名前)だけを取得したいのですが、どうすれば取り出せるのか悩んでいます。何かアドバイスを頂けないでしょうか?
- PL
- 姓名は全角スペースで区切られているようですね。その場合は、String.Substringを使用すると簡単に取り出せますよ。
この記事でわかること
String.Substringメソッドの概要
指定する部分文字列を取得したい場合、C#ではString.Substringメソッドが用意されています。
Substringメソッドでは、指定した位置から、指定した文字数または末尾までの文字列を取得することが可能です。
指定した文字列の切り出し方法(2種類)
文字列の切り出し方法は2種類あります。どちらも引数に切り出しのスタート位置を指定することが必要です。
String Substring(int 開始インデックス番号)
開始インデックス番号には0から始まるスタート位置を指定して、戻り値には切り出した文字列が返ります。
1 2 3 4 |
String s = "日本 花子"; String result = s.Substring(3); Console.WriteLine(result); // → 出力結果は「花子」となります。 |
「日」を0番目とカウントして、3番目は「花」となり、末尾までの「花子」が切り出されています。
String Substring(int 開始インデックス番号, int 切り出す文字数)
引数に、文字数を指定することも可能です。
1 2 3 4 |
String s = "日本 花子"; String result = s.Substring(0, 2); Console.WriteLine(result); // → 出力結果は「日本」となります。 |
0番目から2文字を切り出して、名字の「日本」が切り出されています。
しかし、姓名のうち、何文字目までが名字かは人によって異なりますよね。
そこで、全角スペースの位置までを名字として切り出せるよう変更しましょう。
1 2 3 4 5 |
String s = "日本 花子"; int index = s.IndexOf(' '); String result = s.Substring(0, index); Console.WriteLine(result); // → 出力結果は「日本」となります。 |
IndexOfメソッドを使用することで、全角スペースの位置が2番目と判明し、文字数として使用しています。
文字列の末尾から指定した文字列を切り出す方法
引数で開始インデックス番号を指定すると紹介しましたが、文字列の末尾から指定した文字数分の文字列を取り出したい場合もあると思います。
その際は、下記の流れで文字列を切り出しましょう。
- String.Lengthを使用して文字列全体の文字数を取得
- 1から取得したい文字数を差し引いたインデックス番号を、開始インデックス番号として設定
例えば、顧客コードの文字列から下3桁を取得したいケースを考えてみましょう。
1 2 3 4 5 |
String s = "AP001"; int len = s.Length; String result = s.Substring(len-3); Console.WriteLine(result); // → 出力結果は「001」となります。 |
5桁の顧客コードから末尾の3桁を取得したい場合、5-3=2が開始インデックス番号となります。開始インデックス番号が分かれば、あとの流れは同じですね。
インデックス番号 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
文字列 | A | P | 0 | 0 | 1 |
それでは、次は後ろから4文字目の1文字を取得したい場合を考えてみましょう。
1 2 3 4 5 |
String s = "AP001"; int len = s.Length; String result = s.Substring(len-4, 1); Console.WriteLine(result); // → 出力結果は「P」となります。 |
顧客コード5桁の後ろから4文字目を取得したい場合、5-4=1が開始インデックス番号となり、取得する文字数は1となります。
- PG
- なるほど、String.Substringを使用すれば、実現できそうです!
- PL
- 良かったですね。この機会にいろいろな方法で試してみてください。
String.Substringメソッドを活用しましょう
今回はString.Substringを使用した文字列の切り出しを紹介しました。Stringクラスには様々なメソッドが用意されていますが、Substringも便利なメソッドの1つです。開始インデックス番号がポイントになるので、マスターし効果的に活用してみてください。