C# 计算某个字符在字符串中出现的次数,可以应用于计算关键词密度,判断URL目录的层级深度。
1. 使用可枚举 Enumerable.Count()
方法,引用空间 (System.Linq
)
推荐的解决方案是使用System.Linq的Count()方法来计算字符串中给定字符的出现次数。该方法如下所示:
using System; using System.Linq;
public class Example
{
public static void Main()
{
string str = "Techie Delight";
char ch = 'e';int freq = str.Count(f => (f == ch)); Console.WriteLine(freq); }
}
/*
Output: 3
*/
2. 使用可枚举 Enumerable.Where()
方法,引用空间 (System.Linq
)
下面是另一个LINQ解决方案,它使用Where()方法过滤字符串。下面的代码示例显示了如何使用此选项:
using System;
using System.Linq;public class Example
{
public static void Main()
{
string str = "Techie Delight";
char ch = 'e';int freq = str.Where(x => (x == ch)).Count(); Console.WriteLine(freq); }
}
/*
Output: 3
*/
3. 使用字符串的 String.Split()
方法
这是使用指定的字符将字符串拆分为数组的String.Split()方法,通过字符串数组的Length属性来确定计数。这个方法示例如下所示:
using System;
public class Example
{
public static void Main()
{
string str = "Techie Delight";
char ch = 'e';int freq = str.Split(ch).Length - 1; Console.WriteLine(freq); }
}
/*
Output: 3
*/
4. 使用 foreach
循环
我们也可以为这个简单的任务编写自己的逻辑。其思想是使用foreach循环对字符串中的字符进行迭代,并保持匹配的字符计数。
using System;
public class Example
{
public static void Main()
{
string str = "Techie Delight";
char ch = 'e';int freq = 0; foreach (char c in str) { if (c == ch) { freq++; } } Console.WriteLine(freq); }
}
/*
Output: 3
*/
5. 使用 Regex.Matches()
方法
正则表达式Regex.Matches()方法用于搜索指定正则表达式的所有匹配项的指定输入字符串。我们可以使用它来计算字符串中字符的出现次数。
using System;
using System.Text.RegularExpressions;public class Example
{
public static void Main()
{
string str = "Techie Delight";
char ch = 'e';int freq = Regex.Matches(str, ch.ToString()).Count; Console.WriteLine(freq); }
}
/*
Output: 3
*/
原文链接