如何计算c#中字符串中字符的重复次数? 例如我有sasysays重复的字符''是4
答案 0 :(得分:16)
这是使用LINQ的版本(使用扩展方法编写):
int s = str.Where(c => c == 's').Count();
这使用string
为IEnumerable<char>
的事实,因此我们可以过滤所有与您要查找的字符相等的字符,然后计算所选元素的数量。实际上,你可以这样写(因为Count
方法允许你指定一个应该包含所有计数元素的谓词):
int s = str.Count(c => c == 's');
答案 1 :(得分:7)
另一种选择是:
int numberOfS = str.Count('s'.Equals);
这有点倒退 - 's'
是一个char,每个char都有一个Equals
方法,可以用作Count
的参数。
当然,这不如c => c == 's'
那么灵活 - 你不能轻易地把它变成一个复杂的条件。
答案 2 :(得分:3)
s.Where(c => c == 's').Count()
给定s是一个字符串,你正在寻找's'
答案 3 :(得分:2)
for(int i=0; i < str.Length; i++) {
if(str[i] == myChar) {
charCount++;
}
}
答案 4 :(得分:2)
更通用的解决方案,用于计算所有字符的出现次数:
var charFrequencies = new Dictionary<char, int>();
foreach(char c in s)
{
int n;
charFrequencies.TryGetValue(c, out n);
n++;
charFrequencies[c] = n;
}
Console.WriteLine("There are {0} instances of 's' in the string", charFrequencies['s']);
答案 5 :(得分:1)
string s = "sasysays ";
List<char> list = s.ToList<char>();
numberOfChar = list.Count<char>(c => c=='s');
答案 6 :(得分:0)
试试这段代码:
namespace Count_char
{
class Program
{
static void Main(string[] args)
{
string s1 = Convert.ToString(Console.ReadLine());
for (int i = 97; i < 123; i++)
{
string s2 = Convert.ToString(Convert.ToChar(i));
CountStringOccurrences(s1, s2);
}
Console.ReadLine();
}
public static void CountStringOccurrences(string text, string pattern)
{
int count = 0;
int i = 0;
while ((i = text.IndexOf(pattern, i)) != -1)
{
i += pattern.Length;
count++;
}
if (count != 0)
{
Console.WriteLine("{0}-->{1}", pattern, count);
}
}
}
}