Get number of replacements
本问题已经有最佳答案,请猛点这里访问。
有没有一种方法可以使用
1 2 3 4 | Example: String string_1 ="a a a"; String string_2 = string_1.Replace("a","A"); |
在这种情况下,输出应该是3,因为
型
不能直接用string.replace执行此操作,但可以使用string.indexof搜索字符串,直到它找不到匹配项为止。
1 2 3 4 5 6 | int counter = 0; int startIndex = -1; string string_1 ="a a a"; while((startIndex = (string_1.IndexOf("a", startIndex + 1))) != -1) counter++; Console.WriteLine(counter); |
如果这变得经常使用,那么您可以计划创建一个扩展方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static class StringExtensions { public static int CountMatches(this string source, string searchText) { if(string.IsNullOrWhiteSpace(source) || string.IsNullOrWhiteSpace(searchText)) return 0; int counter = 0; int startIndex = -1; while((startIndex = (source.IndexOf(searchText, startIndex + 1))) != -1) counter++; return counter; } } |
。
然后打电话给
1 | int count = string_1.CountMatches("a"); |
indexof的优点在于不需要创建字符串数组(split)或对象数组(regex.matches)。它只是一个包含整数的普通循环。
型
您可以使用
1 |
拆分字符串后,我们将再获得一个项目。因为,
型
您可以使用
1 | int cnt = Regex.Matches(string_1, Regex.Escape("a")).Count; |
号