[C#] 文字列の切り出し方法 [Substring, Split]

C#

この記事では、C#での文字列の切り出し方法を解説します。

文字列を取り扱っていると、長い文から一部分だけを切り取りたいことってありますよね。

犬

はい。切り取りたいこと、あります。

これから紹介するテクニックを使えば、文字列切り出しの基本をマスターできます。
サンプルコードとともにわかりやすく解説していますので、ぜひ参考にしてください!

ひつじさん
ひつじさん

頑張りましょう。

 

概要

文字列の切り出し方法一覧

文字列を切り出すときは、Stringクラスのメソッドを使います。

具体的には、以下の方法があります。条件に応じて使い分けましょう。

メソッド説明
Substring(startIndex)文字列の開始位置を指定
開始位置から末尾までを取得
Substring(startIndex, length)文字列の開始位置と文字数を指定
開始位置から指定文字数分を取得
Substring(startIndex) & IndexOf(value)切り出したい文字列(の文頭)を指定
文字を検索して末尾まで取得
Substring(startIndex, length) & IndexOf(value)切り出したい文字列(の文頭)と文字数を指定
文字を検索して指定文字数分を取得
Split(separator)区切り文字を指定
区切り文字で分割された配列を取得

次項では、サンプルコードともにもう少し詳しく解説していきます。

 

サンプル&詳細解説

文字の開始位置だけ指定する方法(Substring)

切り出す文字列の開始位置がわかっていて、開始位置から末尾まで取得したい場合はString.Substring(startIndex)メソッドを使用します。

引数のstartIndexに0から始まる開始文字位置を指定すれば、そこから末尾までの文字列を返します。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str = "Hello, World!";

            // 「World!」切り出し
            string part = str.Substring(7);

            // 切り出した文字列を出力
            Console.WriteLine(part);
            Console.ReadKey();
        }
    }
}

実行結果

World!

「Hello, World!」から、7文字目の「W」以降を切り出しました。

開始文字列は0から数えますので、間違えないように注意しましょう。

 

文字の開始位置と文字数を指定する方法(Substring)

切り出す文字列の開始位置と文字数がわかっている場合は、String.Substring(startIndex, length)メソッドを使用します。

第1引数のstartIndexに0から始まる開始位置を、第2引数のlengthに文字数を指定します。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str = "Hello, World!";

            // 「Hello」切り出し
            string part = str.Substring(0, 5);

            // 切り出した文字列を出力
            Console.WriteLine(part);
            Console.ReadKey();
        }
    }
}

実行結果

Hello

「Hello, World!」から、0文字目の「H」から5文字を切り出しました。

 

特定の文字や単語の位置を指定する方法(Substring & IndexOf)

上記のSubstringメソッドのみを使う方法は、切り出したい文字列の位置が変動する場合には使えません。

変動する位置から特定の文字列を抜き出したい場合は、IndexOfメソッドと組み合わせる方法が有効です。

手順としては、まず切り出したい文字列をIndexOfで探して開始位置を取得します。
あとはSubstringで取得した開始位置を指定すればOKです。

実際のサンプルコードで確認してみましょう。

 

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str = "Hello, World!";

            // "World!" の開始位置を検索
            int index = str.IndexOf("World");

            if (index != -1)
            {
                string part = str.Substring(index);
                Console.WriteLine(part);
                Console.ReadKey();
            }
        }
    }
}

実行結果

World!

「Hello, World!」から、「World」の開始位置を探して切り出しています。
このサンプルの場合は、末尾まで取得しているので「World!」となります。

 

区切り文字を指定する方法(Split)

CSV(カンマ区切り)ファイルファイルパスなどの特定の区切り文字が使われている文字列から切り出したい場合は、Splitメソッドを使いましょう。

引数として区切り文字を指定すれば、区切り文字で分割した文字列の配列データを取得できます。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string filePath = @"C:\TEST\Document\memo.txt";

            // `\` で分割(エスケープのため `\\` を使用)
            string[] parts = filePath.Split('\\');

            // 分割した文字列を出力
            foreach (var part in parts)
            {
                Console.WriteLine(part);
            }
            Console.ReadKey();
        }
    }
}

実行結果

C:
TEST
Document
memo.txt

ファイルパス「C:\TEST\Document\memo.txt」を区切り文字「\」で分割した結果が出力されました。

分割した配列には区切り文字自体は含まれませんので、ご注意ください。

 

まとめ

以下は当記事のまとめです!

  • 文字列の切り出しには、主にSubstringメソッドを使用する。
  • IndexOfメソッドと組み合わせれば開始位置を検索して切り出しできる。
  • 特定の文字で区切られている文字列は、Splitメソッドで分割できる。

 

文字列の切り出しは、開発において避けては通れないくらい頻出する処理かと思います。
ですので、今回解説しましたテクニックをしっかり理解して使えるようにしておきましょう!

もし忘れてしまった時は、いつでも当記事を読み返しにきてください。
Asura Programmingはあなたの帰りを待っています。

コメント

タイトルとURLをコピーしました