C# で文字列内の部分文字列を検索する

Muhammad Maisam Abbas 2023年10月12日
C# で文字列内の部分文字列を検索する

このチュートリアルでは、C# の文字列内の 2つの単語間のテキストを抽出する方法について説明します。

C# の文字列からテキストを抽出する

Hi, I am a string variable のような値を持つ文字列変数があり、Histring の間のテキストを検索したい場合、String.IndexOf() メソッドと String.SubString() メソッドを使ってこの目的を達成することができます。

String.IndexOf(x) メソッドは、文字列内の特定の文字列 x のインデックスを取得します。String.SubString(x, y) メソッドは、開始インデックス x と終了インデックス y に基づいてサブ文字列を抽出します。String.IndexOf() 関数を使用して、メイン文字列内の開始文字列と終了文字列のインデックスを取得できます。次に、両方の単語のインデックスを String.SubString() 関数に渡すことにより、両方の文字列間のテキストを抽出できます。次のコード例は、C# の String.IndexOf() メソッドと String.SubString() メソッドを使用して文字列からテキストを抽出する方法を示しています。

using System;

namespace text_from_string {
  class Program {
    public static string stringBetween(string Source, string Start, string End) {
      string result = "";
      if (Source.Contains(Start) && Source.Contains(End)) {
        int StartIndex = Source.IndexOf(Start, 0) + Start.Length;
        int EndIndex = Source.IndexOf(End, StartIndex);
        result = Source.Substring(StartIndex, EndIndex - StartIndex);
        return result;
      }

      return result;
    }
    static void Main(string[] args) {
      string s = "Hi, I am a string variable.";
      string word1 = "Hi";
      string word2 = "string";
      string text = stringBetween(s, word1, word2);
      Console.WriteLine(text);
    }
  }
}

出力:

, I am a

上記のコードでは、メイン文字列と両方の単語をパラメータとして受け取り、メイン文字列内の単語間のテキストを返す関数 stringBetween() を定義します。テキストの開始インデックス StartIndexSource.IndexOf(Start, 0) + Start.Length ステートメントで初期化しました。このステートメントは、Source 文字列内の Start 文字列のインデックスを取得し、それを Start 文字列の長さでインクリメントして、Start がテキスト結果に含まれないようにします。テキストの終了インデックス EndIndex に対しても同じ手順が実行されます。次に、StartIndex を開始インデックスとして、EndIndex-StartIndex を新しい文字列の長さとして String.SubString() 関数に指定して、テキストを返しました。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp String