0

这里我有一些简单的 C# 代码;

Console.WriteLine("Enter Name");
var name = Console.ReadLine();
if (name == "ashley")
{
    Console.WriteLine("You entered: " + name);
}
Console.Read();`

如果用户输入 ashley,它将显示“您输入了 ashley”。但是,如果用户输入 Ashley 或 AsHlEy,它将不起作用。我需要添加什么或如何格式化以使其忽略大小写?

4

5 回答 5

4

string.Equals与适当的StringComparison一起使用

if (string.Equals(name, "ashley", StringComparison.CurrentCultureIgnoreCase))
{
   ...
}

如果您知道变量不为空,您也可以使用

if (name.Equals("ashley", StringComparison.CurrentCultureIgnoreCase))
{
   ...
}

要在评论中回答您的问题,do-while可以使用循环循环,直到问题得到正确回答。下面将循环,直到用户输入除ashley.

string name;
do
{
     Console.WriteLine("Enter Name");
     name = Console.ReadLine();
}
while (string.Equals(name, "ashley", StringComparison.CurrentCultureIgnoreCase));

如果您想要不同的消息传递,可以将其与保护变量结合使用:

string name;
bool nameIsCorrect = false;
do
{
     Console.WriteLine("Enter Name");
     name = Console.ReadLine();

     nameIsAshley = string.Equals(name, "ashley", StringComparison.CurrentCultureIgnoreCase);

     if (nameIsAshley)
     {
        Console.WriteLine("Stop entering 'ashley'");
     }
}
while (!nameIsAshley);
于 2013-09-08T01:35:38.757 回答
3

String.Compare接受一个布尔参数,允许您在比较期间忽略大小写:

Console.WriteLine("Enter Name");
var name = Console.ReadLine();

if (String.Compare(name, "ashley", true) == 0)
{
    Console.WriteLine("You entered: " + name);
}

Console.Read();
于 2013-09-08T01:34:43.390 回答
0

改变这个:

if (name == "ashley")

对此:

if (name.ToLower() == "ashley")
于 2013-09-08T01:34:06.327 回答
0

像这样使用ToLower

Console.WriteLine("Enter Name");
var name = Console.ReadLine();
if (name.ToLower() == "ashley")
{
    Console.WriteLine("You entered: " + name);
}
Console.Read();`
于 2013-09-08T01:34:09.560 回答
0

您可以使用String.ToLower方法

你的测试是:if (name.ToLower() == "ashley")

于 2013-09-08T01:38:49.443 回答