【问题标题】:I am trying to check if my Input has a lower or uppercase letter in it:我正在尝试检查我的输入是否包含小写或大写字母:
【发布时间】:2021-10-26 02:42:45
【问题描述】:

我正在尝试在 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");
    }
}    

【问题讨论】:

  • 您可以使用 ascii 字符,而不是像这样检查。会好起来的。分享您的示例输入字符串。
  • 类似于“Hello World”的东西
  • 输入和字母相同还是不同?
  • 输入将是您输入的内容,而 letters 是一个数组,其中包含字母 a 到 z 作为字符串
  • var lowerCount = letters.Count(char.IsLower); ?我猜你可以弄清楚其余的

标签: c# string uppercase lowercase


【解决方案1】:

您可以编写一个迭代字符串中的字符的方法,并使用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");

有了大写和小写字符的数量,你现在可以实现你的显示逻辑了

【讨论】:

    【解决方案2】:

    当然有更好的方法来做到这一点。但是你目前拥有的东西不起作用的原因是因为如果最后一个条件是真的,那么第一个条件也是如此。因此,第一个 if 块将始终是在这种情况下执行的块。要解决您所拥有的问题,您应该将最后一个条件移到第一个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多