C#检测输入字符串大小写字母数量及现有代码逻辑问题排查
代码问题排查
- 语法错误:第二个
else if分支的闭合大括号写反,应该为}而非{,会直接触发编译报错 - 分支顺序错误:「同时包含大小写」的判断优先级高于单条件判断,放在
else if链的末尾永远不会被触发,只要前面的单小写/单大写条件命中就会跳过后续分支 - 逻辑错误:当前是逐字母判断单个字母的大小写是否存在,并非判断整个输入字符串的整体情况,也无法完成全局计数需求,遍历26个字母再判断存在性的执行效率远低于直接遍历输入字符串的每个字符
修复后实现(推荐)
直接遍历输入字符串的每个字符做判断,同时完成计数,性能更高逻辑更清晰:
int lowerCount = 0; int upperCount = 0; // 逐字符遍历输入统计大小写数量 foreach (char c in Input) { if (char.IsLower(c)) lowerCount++; else if (char.IsUpper(c)) upperCount++; } // 统一判断整体字符情况 if (lowerCount > 0 && upperCount > 0) Console.WriteLine("同时包含大写和小写字母"); else if (lowerCount > 0) Console.WriteLine("仅包含小写字母"); else if (upperCount > 0) Console.WriteLine("仅包含大写字母"); else Console.WriteLine("未检测到字母"); // 输出统计结果 Console.WriteLine($"小写字母数量:{lowerCount},大写字母数量:{upperCount}");
兼容原有letters数组的修改版
如果你必须保留原有遍历letters数组的逻辑,可参考以下修改:
int lowerCount = 0; int upperCount = 0; for(int i = 0; i < letters.Length; i++) { char lower = letters[i][0]; char upper = char.ToUpper(lower); lowerCount += Input.Count(c => c == lower); upperCount += Input.Count(c => c == upper); } // 后续判断逻辑和上面的统一判断部分完全一致即可
内容的提问来源于stack exchange,提问作者Kadia64
相关产品推荐
相关产品推荐

