所以我试图做的是让这个程序在输入时忽略用户的字母大小写。我知道如何使用.ToLower()
;但是我不明白如何以正确的方式做到这一点。
这就是我现在拥有的,我是否关闭?我在网上阅读了很多教程,但它们大多只是将用户输入转换为低级的独立程序。有没有办法全球启用?
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!");
}
}
}
}
}
答案 0 :(得分:3)
只需更改此内容;
if (Enum.TryParse(Console.ReadLine(), out favorite))
到
if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))
Console.ReadLine()返回一个字符串,这将调用该值的较低值,确保所有输入都是较低的。
为什么你有这条线?
if (string.compare(favorite , Enum , true) == 0){
Continue;
}
我认为没有任何理由。 Enum.TryParse
应该返回false,意味着输入不是其中一个枚举,而您不会进入切换语句,或者favorite
将是枚举值之一,而您&#39} ; ll进入switch语句中的一个案例。
答案 1 :(得分:3)
你只需要这样做:
if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))
你不需要那个嵌套的if
,你可以删除它。你也必须在if块的末尾添加一个中断,所以它会在用户输入有效后打破你的循环否则循环永远不会结束。
答案 2 :(得分:3)
Enum.TryParse
接受一个忽略大小写的参数:
Enum.TryParse(Console.ReadLine(), true, out favorite);
答案 3 :(得分:2)
请注意,TryParse
的{{3}}允许您忽略输入字符串的大小写,因此您可以将其写为:
if (Enum.TryParse(Console.ReadLine(), true, out favorite))
答案 4 :(得分:1)
String.ToLower()
会将字符串值返回为小写。
if (Enum.TryParse(Console.ReadLine().ToLower(), out favorite))