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

アプリケーションを作成していると、一部の文字列を取り出したい場面もあると思います。
ExcelではLEFT関数やMID関数で指定の文字列を取得できますが、C#ではString.Substringメソッドを使用して取得します。
この記事では、String.Substringの使用方法について解説していきます。大変便利なメソッドなので、ぜひ参考にしてみてください。
- プログラマー
- 姓名から名(下の名前)だけを取得したいのですが、どうすれば取り出せるのか悩んでいます。何かアドバイスを頂けないでしょうか?
- プロジェクト
リーダー - 姓名は全角スペースで区切られているようですね。その場合は、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となります。
- プログラマー
- なるほど、String.Substringを使用すれば、実現できそうです!
- プロジェクト
リーダー - 良かったですね。この機会にいろいろな方法で試してみてください。
String.Substringメソッドを活用しましょう
今回はString.Substringを使用した文字列の切り出しを紹介しました。Stringクラスには様々なメソッドが用意されていますが、Substringも便利なメソッドの1つです。開始インデックス番号がポイントになるので、マスターし効果的に活用してみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)