是否有方法可以使用.Replace("a", "A");
来获取替换次数?
Example:
String string_1 = "a a a";
String string_2 = string_1.Replace("a", "A");
在这种情况下,输出应为3,因为a
已替换为A
3
次。
答案 0 :(得分:3)
您可以使用.Split
函数获取计数:
string_1.Split(new string[] { "a" }, StringSplitOptions.None).Length-1;
分割完字符串后,我们会得到一个项目。因为,.Split
函数返回一个字符串数组,该数组包含此字符串中的子字符串,这些子字符串由指定字符串数组的元素分隔。因此,Length
属性的值将为 n + 1 。
答案 1 :(得分:3)
你不能直接用string.Replace做这个,但你可以使用string.IndexOf来搜索你的字符串,直到它找不到匹配
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);
如果频繁使用,那么您可以计划创建extension method
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;
}
}
并用
调用它int count = string_1.CountMatches("a");
IndexOf的优点在于您不需要创建字符串数组(Split)或对象数组(Regex.Matches)。它只是一个涉及整数的普通香草循环。
答案 2 :(得分:1)
您可以使用Regex.Matches
方法找出要替换的内容。如果字符串包含任何特殊处理为正则表达式的字符,请使用Regex.Escape
方法转义字符串。
int cnt = Regex.Matches(string_1, Regex.Escape("a")).Count;