C#计算字符串中大小写字母的数量

C#计算字符串中大小写字母的数量,c#,string,for-loop,foreach,C#,String,For Loop,Foreach,大家好,我被要求做一项任务,计算一个字符串中元音、辅音、大写字母和小写字母的数量 我在计算字符串中的大小写字母时遇到困难。 我可以成功地计算元音和常量的数量,但大写字母和小写字母似乎是一个难题 代码如下: public void Calculate() { foreach(string sentence in sentenceList) { sentences++; for (int i = 0;

大家好,我被要求做一项任务,计算一个字符串中元音、辅音、大写字母和小写字母的数量

我在计算字符串中的大小写字母时遇到困难。 我可以成功地计算元音和常量的数量,但大写字母和小写字母似乎是一个难题

代码如下:

    public void Calculate()
    {
        foreach(string sentence in sentenceList)
        {
            sentences++;

            for (int i = 0; i < sentence.Length; i++)
            {
                if (vowelsArray.Contains(sentence[i]))
                {
                    vowels++;
                }
                else if (consonantsArray.Contains(sentence[i]))
                {
                    consonants++;
                }
                else if (char.IsUpper(sentence[i]))
                {
                    upperCaseLetters++;
                }
                else if (char.IsLower(sentence[i]))
                {
                    lowerCaseLetters++;
                }
            }
        }
    }
public void Calculate()
{
foreach(句子列表中的字符串句子)
{
句子++;
for(int i=0;i<句子长度;i++)
{
if(元音数组.Contains(句子[i]))
{
元音++;
}
else if(辅音sarray.Contains(句子[i]))
{
辅音++;
}
else if(char.IsUpper(句子[i]))
{
大写字母++;
}
else if(字符IsLower(句子[i]))
{
小写字母++;
}
}
}
}
大写字母和小写字母的值为0。(不应该这样)


有什么建议吗?谢谢

在循环中,你每次只会碰到其中一个条件,所以如果你的前两个条件涵盖了所有的可能性(这很有可能,因为这涵盖了所有元音和辅音!)你永远不会到达你的第三个和第四个块。

在循环中,你每次只会碰到其中的一个条件,所以如果你的前两个条件涵盖了所有的可能性(这很可能,因为这涵盖了所有的元音和辅音!)你永远不会到达你的第三个和第四个街区。

你之前不需要
其他的

  string text = "This is Sample";
  int upcount = 0;
  int lowcount = 0;
  for (int i = 0; i < text.Length; i++)
  {
   if (char.IsUpper(text[i])) upcount++;
   if (char.IsLower(text[i])) lowcount++;
  }
  Console.Write(upcount);
  Console.Write(lowcount);
else if (char.IsUpper(sentence[i]))
因为您有两组独立的条件:

  • 元音/辅音
  • 大写/小写

  • 您不需要在之前使用
    其他

    else if (char.IsUpper(sentence[i]))
    
    因为您有两组独立的条件:

  • 元音/辅音
  • 大写/小写

  • 您有一系列
    if
    /
    else
    语句,匹配的第一个条件(元音或辅音)将阻止任何未来条件的匹配。将
    if
    /
    else
    链分成两条链:

    • 元音与辅音
    • 大写与小写
    请参阅下面的更新代码:

        public void Calculate()
        {
            foreach(string sentence in sentenceList)
            {
                sentences++;
    
                for (int i = 0; i < sentence.Length; i++)
                {
                    if (vowelsArray.Contains(sentence[i]))
                    {
                        vowels++;
                    }
                    else if (consonantsArray.Contains(sentence[i]))
                    {
                        consonants++;
                    }
    
                    // the else was removed here!
                    if (char.IsUpper(sentence[i]))
                    {
                        upperCaseLetters++;
                    }
                    else if (char.IsLower(sentence[i]))
                    {
                        lowerCaseLetters++;
                    }
                }
            }
        }
    
    public void Calculate()
    {
    foreach(句子列表中的字符串句子)
    {
    句子++;
    for(int i=0;i<句子长度;i++)
    {
    if(元音数组.Contains(句子[i]))
    {
    元音++;
    }
    else if(辅音sarray.Contains(句子[i]))
    {
    辅音++;
    }
    //其他人在这里被移除了!
    if(char.IsUpper(句子[i]))
    {
    大写字母++;
    }
    else if(字符IsLower(句子[i]))
    {
    小写字母++;
    }
    }
    }
    }
    
    您有一系列
    if
    /
    else
    语句,匹配的第一个条件(元音或辅音)将阻止任何未来条件的匹配。将
    if
    /
    else
    链分成两条链:

    • 元音与辅音
    • 大写与小写
    请参阅下面的更新代码:

        public void Calculate()
        {
            foreach(string sentence in sentenceList)
            {
                sentences++;
    
                for (int i = 0; i < sentence.Length; i++)
                {
                    if (vowelsArray.Contains(sentence[i]))
                    {
                        vowels++;
                    }
                    else if (consonantsArray.Contains(sentence[i]))
                    {
                        consonants++;
                    }
    
                    // the else was removed here!
                    if (char.IsUpper(sentence[i]))
                    {
                        upperCaseLetters++;
                    }
                    else if (char.IsLower(sentence[i]))
                    {
                        lowerCaseLetters++;
                    }
                }
            }
        }
    
    public void Calculate()
    {
    foreach(句子列表中的字符串句子)
    {
    句子++;
    for(int i=0;i<句子长度;i++)
    {
    if(元音数组.Contains(句子[i]))
    {
    元音++;
    }
    else if(辅音sarray.Contains(句子[i]))
    {
    辅音++;
    }
    //其他人在这里被移除了!
    if(char.IsUpper(句子[i]))
    {
    大写字母++;
    }
    else if(字符IsLower(句子[i]))
    {
    小写字母++;
    }
    }
    }
    }
    
    我已经使用

    但以下是对我有效的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    public class Program
    {
        public static void Main()
        {
            int upper = 0;
            int lower = 0;
    
            string upperLowerCase = "This Is A Test";
    
            char[] splitString = upperLowerCase.ToCharArray();
    
            for(int i = 0; i < splitString.Length; i++)
            {
                if(char.IsUpper(splitString[i]))
                {
                    upper++;    
                }
                else
                {
                    lower++;    
                }
    
            }
    
            Console.WriteLine("Total Upper Case Letters: " + upper.ToString());
            Console.WriteLine("Total Lower Case Letters: " +lower.ToString());
        }
    }
    
    // Output
    // Total Upper Case Letters: 4
    // Total Lower Case Letters: 10
    
    需要更改为:

    if (char.IsUpper(sentence[i]))
    {
        upperCaseLetters++;
    }
    else
    {
        lowerCaseLetters++;
    }
    
    我希望这有帮助

    我已经使用

    但以下是对我有效的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    public class Program
    {
        public static void Main()
        {
            int upper = 0;
            int lower = 0;
    
            string upperLowerCase = "This Is A Test";
    
            char[] splitString = upperLowerCase.ToCharArray();
    
            for(int i = 0; i < splitString.Length; i++)
            {
                if(char.IsUpper(splitString[i]))
                {
                    upper++;    
                }
                else
                {
                    lower++;    
                }
    
            }
    
            Console.WriteLine("Total Upper Case Letters: " + upper.ToString());
            Console.WriteLine("Total Lower Case Letters: " +lower.ToString());
        }
    }
    
    // Output
    // Total Upper Case Letters: 4
    // Total Lower Case Letters: 10
    
    需要更改为:

    if (char.IsUpper(sentence[i]))
    {
        upperCaseLetters++;
    }
    else
    {
        lowerCaseLetters++;
    }
    

    我希望这有帮助

    根据Sajeetharan的回答,版本稍微快一点

     string text = "This is Sample";
      int upcount = 0;
      int lowcount = 0;
      for (int i = 0; i < text.Length; i++)
      {
      if (text[i]>64 && text[i]<91) upcount++;
       else if (text[i]>96 && text[i]<123) lowcount++;
      }
      Console.Write(upcount);
      Console.Write(lowcount);
    
    string text=“这是示例”;
    int-upcount=0;
    int lowcount=0;
    for(int i=0;i如果(文本[i]>64&&text[i]96&&text[i]根据萨吉塔兰的回答,速度稍微快一点

     string text = "This is Sample";
      int upcount = 0;
      int lowcount = 0;
      for (int i = 0; i < text.Length; i++)
      {
      if (text[i]>64 && text[i]<91) upcount++;
       else if (text[i]>96 && text[i]<123) lowcount++;
      }
      Console.Write(upcount);
      Console.Write(lowcount);
    
    string text=“这是示例”;
    int-upcount=0;
    int lowcount=0;
    for(int i=0;i如果(文本[i]>64&&text[i]96&&text[i]这正是我在我的程序中得到的,你测试过这个并看到结果了吗?我刚刚得到0。这正是我在我的程序中得到的,你测试过这个并看到结果了吗?我刚刚得到0。你可以使用一行代码来检查上面的代码,然后使用同一行代码并将其更改为检查下面的
    var cnt=YourString.Count(c=>Char.IsUpper(c))
    您可以使用一行代码检查上限,然后使用同一行代码并将其更改为检查下限
    var cnt=YourString.Count(c=>Char.IsUpper(c))
    你是明星!哈哈,这么简单的修正。谢谢你,你是明星!哈哈,这么简单的修正。谢谢你,OP是否需要
    ,否则如果
    检查小写字母?如果字母不是大写字母,那么显然它将是b