【C#入門】String.Substringで文字列の指定部分を抜き出す方法

Substringメソッドって使ってますか?Substringメソッドを使うことで、文字列からある指定の文字列を抜き出すことができます。

この記事では、Substringメソッドについて

  • String.Substringメソッドとは
  • String.Substringで文字列を抜き出す

という基本的な内容から、

  • IndexOfメソッドとの組み合わせ

など具体的な使い方の内容についても解説していきます。

今回はSubstringメソッドについて、使い方をわかりやすく解説します!

目次

String.Substringメソッドとは

SubstringメソッドとはStringクラスのメソッドで、文字列から指定の文字列を抜き出す場合に使います。

Substringメソッドは以下のように定義されています。

public string Substring(
    int startIndex,
    int length
)

引数Substringには、抜き出す文字列の開始文字位置を0から指定します。引数lengthには、抜き出す文字列の文字数を指定します。

引数lengthを省略すると、末尾まで抜き出します

String.Substringで文字列を抜き出す

それでは、サンプルコードでSubstringメソッドの使い方を確認しましょう。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "侍エンジニア塾";
      Console.WriteLine(str.Substring(0, 1));
      Console.WriteLine(str.Substring(1, 5));
      Console.WriteLine(str.Substring(6));
      
      Console.ReadKey();
    }
  }
}

実行結果:

侍
エンジニア
塾

このサンプルコードでは、Substringメソッドを使って開始位置と文字数を指定して、文字列strから部分文字列の一部分を抜き出しています。

IndexOfメソッドとの組み合わせ

先ほどのサンプルコードでは、抜き出す部分文字列の開始位置と文字数をあらかじめ数値で指定しました。

しかし、抜き出す文字列を変数で変えられるようにした場合は、その文字列がどの位置から開始するかも変わってきます。

その場合は、IndexOfメソッドを使って文字列の開始位置を取得します。IndexOfメソッドを以下のように定義されています。

public int IndexOf(
    string value
)

引数valueには探す文字列を指定します。

SubstringメソッドとIndexOfメソッドを組み合わせて指定した文字列を抜き出す方法を確認しましょう。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string src_str = "侍エンジニア";
      string target_str = "エンジニア";
      Console.WriteLine(src_str.Substring(
                          src_str.IndexOf(target_str), 
                          target_str.Length));
      
      Console.ReadKey();
    }
  }
}

実行結果:

エンジニア

このサンプルコードでは、SubstringメソッドとIndexOfメソッドを組み合わせて文字列を抜き出しています。

抜き出す文字列の開始位置をIndexOfメソッドを使って取得し、Lengthプロパティを使って文字数を取得しています。

IndexOfメソッドの詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

文字列の使い方総まとめ

文字列の様々な使い方は次の記事でまとめて解説しているので、その他の文字列の使い方に興味がある方はぜひ確認してください。

まとめ

ここでは、StringクラスのSubstringメソッドについて説明しました。

SubstringメソッドはIndexOfメソッドと組み合わせて使われることも多いです。

使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

目次