C# で文字列内の部分文字列を検索する
このチュートリアルでは、C# の文字列内の 2つの単語間のテキストを抽出する方法について説明します。
C# の文字列からテキストを抽出する
Hi, I am a string variable
のような値を持つ文字列変数があり、Hi
と string
の間のテキストを検索したい場合、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()
を定義します。テキストの開始インデックス StartIndex
を Source.IndexOf(Start, 0) + Start.Length
ステートメントで初期化しました。このステートメントは、Source
文字列内の Start
文字列のインデックスを取得し、それを Start
文字列の長さでインクリメントして、Start
がテキスト結果に含まれないようにします。テキストの終了インデックス EndIndex
に対しても同じ手順が実行されます。次に、StartIndex
を開始インデックスとして、EndIndex-StartIndex
を新しい文字列の長さとして String.SubString()
関数に指定して、テキストを返しました。
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