首页 > 解决方案 > 我正在尝试检查我的输入是否包含小写或大写字母:

问题描述

我正在尝试在 C# 中检查我输入的输入是否有大写字母或小写字母,并指定有多少个小写字母和大写字母。“输入”是您输入的输入的字符串长度,“字母”是字母 a - z 小写的字符串数组。

前两个语句检查“输入”是否包含小写字母,否则如果“输入”包含小写字母,它们似乎都可以工作,但由于某种原因它不能同时检查它们:最后的 else if 语句检查是否输入至少有 1 个大写和 1 个小写:

for(int i = 0; i < letters.Length; i++) 
{
    if(Input.Contains(letters[i].ToLower()))
    {
        WriteLine("Lowercase");
    }
    else if (Input.Contains(letters[i].ToUpper()))
    {
        WriteLine("Uppercase");
    {
    else if (Input.Contains(letters[i].ToLower()) &&
        Input.Contains(letters[i].ToUpper()))   
    {
        WriteLine("Uppercase and Lowercase");
    }
}    

标签: c#stringuppercaselowercase

解决方案


您可以编写一个迭代字符串中的字符的方法,并使用char.IsUpperchar.IsLower方法为大写/小写字符维护一个计数器。

(int,int) CheckCase(string value)
{
    var countUpper = 0;
    var countLower = 0;
    foreach(var c in value)
    {
        if(char.IsUpper(c)) 
        {
            countUpper++; 
        }
        else if(char.IsLower(c)) 
        {
            countLower++; 
        }
    }
    
    return (countUpper,countLower);
}

正如所观察到的,这将只需要对字符串中的字符进行一次迭代。

您现在可以将该方法用作

var (countUpper,countLower) = CheckCase("SampleString");

掌握大写和小写字符的数量后,您现在可以实现显示逻辑


推荐阅读