【问题标题】:I need a filtering program in c#我需要一个 C# 中的过滤程序
【发布时间】:2020-04-28 09:36:11
【问题描述】:

我需要一个程序来过滤并仅显示字符串中的大写字母。我有一个示例字符串:

c5hDF(5HА_Z*u1BP

我应该得到:

DFHAZBP

我试过这个:

string a = Console.ReadLine(); 

我不能在 IF 语句中使用“a”,因为有一个错误提示

错误 CS0200 无法分配属性或索引器“string.this[int]” to -- 只读

我尝试了很长时间,因为我想不出其他方法。我基本上告诉程序检查字符串的每一部分是否是这样的大写字母:

for (i = 0; i < a.Length; i++)
{
    if (a[i] = "Q")
    {
        b = b + a[i];
    }   
}

我正在考虑为每个字母都这样做,但它不起作用。我也试过了:

string v = a;

然后在所有 'if's 中输入 v,但这也不起作用。

【问题讨论】:

标签: c#


【解决方案1】:

简单的错字:

if (a[i] = "Q")

应该是

if (a[i] == "Q")

用于比较,而不是赋值。

【讨论】:

  • 使用== 'Q',字符用单引号,字符串用双引号。
  • @TheDemonCrusher 字符串在双引号中,例如“Q”,一个字符是在单撇号中,例如。 'Q',所以你应该这样做 if (a[i] = 'Q')
  • @DudeWhoWantsToLearn,== 又消失了
  • Nvm 做到了,我必须使用“Q”而不是“Q”
【解决方案2】:

就像 AKX 说的,你只是有一个简单的错字。

但是,您似乎打算根据 A、B、C 等检查每个字符串字符,这非常麻烦且并非真正需要。框架已经有char.IsUpper 来检查字符是否为大写字母。

您也可以使用 LINQ 来简化代码,而不是循环:

var b = new string(a.Where(char.IsUpper).ToArray());

对于a = "c5hDF(5HА_Z*u1BP",这将产生b = "DFHАZBP"

这会将您的字符串 a 并通过 LINQ 将其转换为字符序列,然后过滤它们是否为大写,将过滤后的序列转换为数组,然后可以通过使用 string constructor 来使用将其转换为字符串。

【讨论】:

    【解决方案3】:

    您可以简单地使用 IsUpper() 来获得所需的输出。我已经根据您的要求尝试了代码。请参考以下代码。

            static void Main(string[] args)
            {
                string text = "IsHanKsHaH";
                char[] charArray = text.ToCharArray();
                foreach(var ch in charArray)
                {
                    if(Char.IsUpper(ch))
                    {
                        Console.Write(ch);
                    }
                }
                Console.ReadLine();
            }
    

    输出将是 IHKHH

    【讨论】:

    • 您不需要调用ToCharArray,因为枚举字符串会自动创建可枚举的字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2010-09-23
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多