我有一个巨大的字符串(内容页面)我想得到一个子字符串实例的所有索引。
示例:你如何你?
如何在上述句子中获得所有你的索引。
请帮忙。
答案 0 :(得分:4)
string input = "How are you and where are you?";
var indexes = Regex.Matches(input, "you").Cast<Match>().Select(m => m.Index)
.ToList();
答案 1 :(得分:3)
您可以在循环中使用IndexOf方法with startIndex parameter,并将last_match_index + 1
传递给它。
类似的东西:
int pos=-1, count=0;
while((pos=str.IndexOf("you",pos+1))!=-1)
{
count++;
}
答案 2 :(得分:3)
您可以使用以下表现。它在带有重载的循环中使用IndexOf
,允许传递您想要开始搜索的索引。循环直到它返回-1
并将找到的索引添加到集合中:
public static IList<int> AllIndexOf(this string text, string str, StringComparison comparisonType)
{
IList<int> allIndexOf = new List<int>();
int index = text.IndexOf(str, comparisonType);
while(index != -1)
{
allIndexOf.Add(index);
index = text.IndexOf(str, index + str.Length, comparisonType);
}
return allIndexOf;
}
你以这种方式使用它:
string text = " How are you and where are you?";
var allIndexOf = text.AllIndexOf("you", StringComparison.OrdinalIgnoreCase);
Console.WriteLine(string.Join(",", allIndexOf)); // 9,27
StringComparison
允许不区分大小写搜索。