VB中统计.ToCharArray生成的字符数组内指定字符出现次数的方法
统计字符数组中目标字母的出现次数
嘿,这个需求太常见了,我给你分享几种实用的实现方式,你可以根据自己的.NET版本和代码风格来选:
方法一:基础循环遍历(直观易懂,兼容所有版本)
这是最基础的方式,适合刚入门的开发者理解逻辑,也能灵活控制各种判断条件:
// 假设你已经有了转换好的字符数组 char[] charArray = "HelloWorld".ToCharArray(); // 要统计的目标字母 char targetChar = 'l'; int count = 0; foreach (char c in charArray) { // 精准匹配(区分大小写) if (c == targetChar) { count++; } // 如果需要忽略大小写,把上面的判断换成下面这行 // if (char.ToLowerInvariant(c) == char.ToLowerInvariant(targetChar)) } Console.WriteLine($"字符 '{targetChar}' 出现了 {count} 次");
方法二:用LINQ一行搞定(简洁高效)
如果你熟悉LINQ的话,这绝对是最省心的方式,代码量少还清晰:
char[] charArray = "HelloWorld".ToCharArray(); char targetChar = 'l'; // 区分大小写的统计 int caseSensitiveCount = charArray.Count(c => c == targetChar); // 忽略大小写的统计(推荐用StringComparison,比ToLower更稳妥) int caseInsensitiveCount = charArray.Count(c => char.Equals(c, targetChar, StringComparison.OrdinalIgnoreCase)); Console.WriteLine($"区分大小写:{caseSensitiveCount} 次,忽略大小写:{caseInsensitiveCount} 次");
小提示
其实如果还没把字符串转成字符数组,直接用字符串的Count方法更省事,比如:
"HelloWorld".Count(c => c == 'l');
不过既然你已经有了字符数组,上面的两种方法完全适用。另外,处理Unicode字符或者特殊场景时,优先用char.Equals搭配StringComparison枚举,能避免很多大小写转换的坑。
内容的提问来源于stack exchange,提问作者tkburis
相关产品推荐
相关产品推荐

