📌  相关文章
📜  C# – 查找字符串中所有子字符串的不同方法(1)

📅  最后修改于: 2023-12-03 15:13:50.064000             🧑  作者: Mango

C#– 查找字符串中所有子字符串的不同方法

在C#中,要查找字符串中所有子字符串,我们可以使用以下方法:

1.使用String.IndexOf方法

使用String.IndexOf方法可以得到第一个匹配项在字符串中的位置。然后可以在该位置之后进行另一个查询,以查找下一个匹配项。这种方法可能不是很有效率,因为我们会重复搜索已经搜索过的部分。实现程序:

string source = "This is a sample string. This string contains multiple occurrences of the word string.";

string find = "string";
int startIndex = 0;

while ((startIndex = source.IndexOf(find, startIndex)) != -1)
{
    Console.WriteLine(" Found at index: " + startIndex);
    startIndex += find.Length;
}
2.使用Regex.Matches方法

使用Regex.Matches方法可以使用正则表达式来匹配字符串中的所有子字符串,这样我们不会重复搜索已经搜索过的部分。实现程序:

string source = "This is a sample string. This string contains multiple occurrences of the word string.";

string pattern = "string";
foreach (Match match in Regex.Matches(source, pattern))
{
    Console.WriteLine(" Found at index: " + match.Index);
}
3.使用String.Split方法

使用String.Split方法可以使用给定的分隔符拆分字符串为字符串数组,并使用数组的IndexOf方法查找子字符串。如果匹配,则返回它的位置。这种方法可能会比较慢,因为需要先将字符串拆分成字符串数组,然后再查找子字符串。实现程序:

string source = "This is a sample string. This string contains multiple occurrences of the word string.";

string[] words = source.Split(' ');
string find = "string";

for (int i = 0; i < words.Length; i++)
{
    if (words[i].Contains(find))
    {
        Console.WriteLine(" Found at index: " + source.IndexOf(words[i]));
    }
}

总结:

以上就是C#中查找字符串中所有子字符串的不同方法,每种方法都可以用来满足不同的需求。我们可以根据具体的情况选择使用哪一种方法来实现字符串中子字符串的查找。