在C#中,你可以使用`String.IndexOf`方法和一个循环来查找字符串中某个词出现的次数及其索引。但需要注意的是,`IndexOf` 方法默认从当前位置向后搜索,并且每次找到匹配项后,你需要手动调整搜索的起始位置以避免重复计数。
下面是一个示例代码,它展示了如何查找一个特定词在字符串中出现的次数以及每次出现的索引:
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
string text = "hello world hello universe hello everyone";
string wordToFind = "hello";
List<int> indexes = FindWordIndexes(text, wordToFind);
Console.WriteLine($"The word '{wordToFind}' appears {indexes.Count} times.");
if (indexes.Count > 0)
{
for (int i = 0; i < indexes.Count; i++)
{
Console.WriteLine($"Index {i + 1}: {indexes[i]}");
}
}
}
static List<int> FindWordIndexes(string text, string wordToFind)
{
List<int> indexes = new List<int>();
int index = 0;
while ((index = text.IndexOf(wordToFind, index)) != -1)
{
indexes.Add(index);
index += wordToFind.Length; // 移动到下一个可能的匹配项的位置
}
return indexes;
}
}
在这个示例中,`FindWordIndexes` 方法接受一个文本字符串和一个要查找的词作为输入,并返回一个包含所有匹配项索引的列表。注意,在每次找到匹配项后,我们将搜索的起始位置更新为当前找到的索引加上要查找的词的长度,以确保不会重复计数相邻的相同词。
然后,在 `Main` 方法中,我们调用 `FindWordIndexes` 方法并打印出结果。注意,我们还添加了一个检查来避免在索引列表为空时打印索引。