ホームページ > バックエンド開発 > C++ > C# で文字列内のすべての部分文字列を検索するにはどうすればよいですか?

C# で文字列内のすべての部分文字列を検索するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-30 01:59:08
オリジナル
363 人が閲覧しました

How Can I Find All Occurrences of a Substring Within a String in C#?

C# での大きな文字列内の部分文字列のすべての位置の検索

問題:

大きな文字列を指定した場合、指定された部分文字列が出現するすべての位置を識別して保存する必要があります。その文字列。たとえば、部分文字列が "extract"(me,i-have Lots. of]punctuation" で、大きい文字列の先頭と中間に出現する場合、両方のインスタンスを見つけて、それらのインデックス位置をリストに追加する必要があります。 0 と中間のオカレンスのインデックスを含むリスト。

解決策:

提供されたコードは IndexOf を利用します。このメソッドは、文字列内で最初に出現した部分文字列を見つけるために使用できます。ただし、このメソッドは最初に一致したもののみを返します。ループを使用して、前の一致の後の位置から IndexOf を繰り返し呼び出すことができます。一致するものが見つからなくなるまで、インデックス位置を目的のリストに追加できます。

これは、提供されているものの修正版です。コード:

List<int> inst = new List<int>();
int index = 0;
while (index < source.Length)
{
    int src = source.IndexOf("extract\"(me,i-have lots. of]punctuation", index);
    if (src == -1)
        break;  // No more occurrences found
    inst.Add(src);
    index = src + 40; // Advance the search index to beyond the current match
}
ログイン後にコピー

代替アプローチ:

もう 1 つの解決策には、より利便性を高めるための拡張メソッドの使用が含まれます。イテレータ パターンを利用する拡張メソッドの例を次に示します。 >

public static IEnumerable<int> AllIndexesOf(this string str, string value)
{
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    for (int index = 0;; index += value.Length)
    {
        index = str.IndexOf(value, index);
        if (index == -1)
            break;
        yield return index;
    }
}
ログイン後にコピー
この拡張メソッドを使用すると、次のように部分文字列のすべての出現を簡単に見つけることができます。以下:

以上がC# で文字列内のすべての部分文字列を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート