这是一个示例扩展方法:
public static List<int> AllIndexesOf(this string str, string value) { if (String.IsNullOrEmpty(value)) throw new ArgumentException("the string to find may not be empty", "value"); List<int> indexes = new List<int>(); for (int index = 0;; index += value.Length) { index = str.IndexOf(value, index); if (index == -1) return indexes; indexes.Add(index); }}如果将其放入静态类并使用导入名称空间
using,则该名称空间将作为任何字符串上的方法出现,您可以执行以下操作:
List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");有关扩展方法的更多信息,请访问http://msdn.microsoft.com/zh-
cn/library/bb383977.aspx
使用迭代器也相同:
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; }}


