Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在这种情况下,如何正确使用.ToLower()?_C#_String_String Comparison_Tolower - Fatal编程技术网

C# 在这种情况下,如何正确使用.ToLower()?

C# 在这种情况下,如何正确使用.ToLower()?,c#,string,string-comparison,tolower,C#,String,String Comparison,Tolower,所以我试图让这个程序在输入时忽略用户的字母大小写。我知道如何使用;然而,我不明白如何以正确的方式做到这一点 这就是我现在拥有的,我接近了吗?我在网上读过很多教程,但它们大多只是将用户输入转换为较低版本的独立程序。有没有办法在全球范围内实现这一点 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace

所以我试图让这个程序在输入时忽略用户的字母大小写。我知道如何使用;然而,我不明白如何以正确的方式做到这一点

这就是我现在拥有的,我接近了吗?我在网上读过很多教程,但它们大多只是将用户输入转换为较低版本的独立程序。有没有办法在全球范围内实现这一点

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Choose_Your_Color
{
class Program
{
    enum Color
    {
        red,
        orange,
        blue,
        black,
        white,
        green,
        purple,
        yellow
    }
    static void Main(string[] args)
    {

        Color favorite;
        while (true)
        {
            Console.WriteLine("What color do you choose?");
            if (Enum.TryParse(Console.ReadLine(), out favorite))
                if (string.compare(favorite , Enum , true) == 0){
                    Continue;
                }



            {
                switch (favorite)
                {
                    case Color.red:
                        Console.WriteLine("You chose red!");
                        break;
                    case Color.orange:
                        Console.WriteLine("you chose orange!!!!!!");
                        break;
                    case Color.blue:
                        Console.WriteLine("YOU CHOSE BLUEEEE!!");
                        break;
                    case Color.black:
                        Console.WriteLine("you chose black");
                        break;
                    case Color.white:
                        Console.WriteLine(" you chose white!");
                        break;
                    case Color.green:
                        Console.WriteLine("you chose green!!!!!");
                        break;
                    case Color.purple:
                        Console.WriteLine("you chose purple!!");
                        break;
                    case Color.yellow:
                        Console.WriteLine("you chose yellow!!!");
                        break;

                }
            }

            else
            {
                Console.WriteLine("That's not a color!");
            }





        }
    }
}
}

只要改变这个

if (Enum.TryParse(Console.ReadLine(), out favorite))

Console.ReadLine返回一个字符串,这将调用该值的lower,以确保所有输入都是小写的

你为什么有这条线

            if (string.compare(favorite , Enum , true) == 0){
                Continue;
            }
我认为没有任何理由。Enum.TryParse应该返回false,表示输入不是枚举之一,您不会进入switch语句,或者favorite将是枚举值之一,您将进入switch语句中的一种情况。

只需更改此项

if (Enum.TryParse(Console.ReadLine(), out favorite))

Console.ReadLine返回一个字符串,这将调用该值的lower,以确保所有输入都是小写的

你为什么有这条线

            if (string.compare(favorite , Enum , true) == 0){
                Continue;
            }
我认为没有任何理由。Enum.TryParse应返回false,表示输入不是枚举之一,您不会进入switch语句,或者favorite将是枚举值之一,您将进入switch语句中的一种情况。

您只需执行以下操作:

if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))
您不需要嵌套if,只需将其删除即可。您还必须在if块的末尾添加一个中断,以便在用户键入有效值后它将中断您的循环,否则循环将永远不会结束。

您只需执行以下操作:

if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))
您不需要嵌套的if,只需删除它即可。此外,您必须在if块的末尾添加一个中断符,以便在用户键入有效值后它将中断循环,否则循环将永远不会结束。

将以小写形式返回字符串值

if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))
将以小写形式返回字符串值

if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))
Enum.TryParse接受一个参数以忽略大小写:

Enum.TryParse(Console.ReadLine(), true, out favorite);
Enum.TryParse接受一个参数以忽略大小写:

Enum.TryParse(Console.ReadLine(), true, out favorite);
请注意,TryParse的大小写允许您忽略输入字符串的大小写,因此您可以将其写成:

if (Enum.TryParse(Console.ReadLine(), true, out favorite))
请注意,TryParse的大小写允许您忽略输入字符串的大小写,因此您可以将其写成:

if (Enum.TryParse(Console.ReadLine(), true, out favorite))

谢谢你的更正。谢谢你的更正。嗯,它仍然返回它,因为它没有被识别。这是因为while循环的原因吗?@user3554677也许输入与任何枚举值都不匹配?您可能还希望对输入调用Trim,因为它可能有空格,这将阻止匹配。还有,最后一件事我将编辑到我的答案中。我删除了第二条if语句。代码完全按照原样减去第二条if语句,再加上if Enum.tryparseconole.ReadLine.ToLower,outfavorite@user3554677在这种情况下,您编写的代码与msdn上的示例非常相似。你能在if的主体中设置一个断点,看看发生了什么吗?Enum.TryParse的使用是正确的,所以我不确定是什么导致了问题。嗯,它仍然返回它,因为它没有被识别。这是因为while循环的原因吗?@user3554677也许输入与任何枚举值都不匹配?您可能还希望对输入调用Trim,因为它可能有空格,这将阻止匹配。还有,最后一件事我将编辑到我的答案中。我删除了第二条if语句。代码完全按照原样减去第二条if语句,再加上if Enum.tryparseconole.ReadLine.ToLower,outfavorite@user3554677在这种情况下,您编写的代码与msdn上的示例非常相似。你能在if的主体中设置一个断点,看看发生了什么吗?Enum.TryParse的使用是正确的,因此我不确定是什么导致了问题。