C#如何能够放置" text"像TeXT一样,它仍然运行If

时间:2017-02-13 17:09:28

标签: c# string if-statement console

我有一本关于C#的书(CSharp)我只知道一点但我正在做Console.Writeline的东西

我这里有这个简单的代码

Console.WriteLine("Please enter your name");

string name = Console.ReadLine();
if (name.Contains("no"))
{
    Console.WriteLine("\nFine, don't put your name in");
}
else
{
    Console.WriteLine("\nHello, " + name);
}

在If部分 如果你把" no"显然它会运行(" \ n精细,不要把你的名字放在") 但如果你把"没有" as" No" " NO" "否"它没有像name这样的代码。包含无论如何放置它运行它的文本并不重要

像SmallBasic一样 Text.ConvertToLowerCase会将您的文本转换为小写,然后运行IF

谢谢!

8 个答案:

答案 0 :(得分:13)

您应该将Contains更改为Equals,如果不是像诺埃尔这样的名字会输出“罚款不要将您的名字输入”

if(name.Equals("no", StringComparison.CurrentCultureIgnoreCase))
{

}

答案 1 :(得分:7)

您可以将输入转换为小写字符:

if (name.ToLower().Contains("no"))

但为什么你不喜欢像#34; Tino"或者"诺拉"?更好地比较整个字符串,而不仅仅是检查它是否包含" no":

if (name.Equals("no", StringComparison.InvariantCultureIgnoreCase))

答案 2 :(得分:2)

只需使用name.ToLower()方法,它将使文本全部小写。因此,当您与" no"进行比较时或"是"你不必担心输入的区分大小写。

答案 3 :(得分:1)

使用ToLower()

    string name = Console.ReadLine();
    if (name.ToLower().Contains("no"))
    {
        Console.WriteLine("\nFine, don't put your name in");
    }
    else
    {
        Console.WriteLine("\nHello, " + name);
    }

答案 4 :(得分:1)

我会回答原来的问题:

  

是否存在类似name.Contains的代码,无论如何将它运行的文本放在哪里并不重要

是:

IPRULEADD="/sbin/ip rule add"
IPROUTEADD="/sbin/ip route add"

在此处查看更多信息和不区分大小写的StringExtension:Case insensitive 'Contains(string)'

然而,正如其他人所指出的,bool contains = name.IndexOf("no", StringComparison.OrdinalIgnoreCase) >= 0; 会给你许多误报。您应该使用Contains()代替。

答案 5 :(得分:1)

使用Equals方法比较您的值而不是检查Contains。在忽略案例时,您有三种变体来选择平等,这是当前文化案例忽略,不变文化案例忽略和序数案例忽略。

您的问题似乎不是特定于文化的,因此您可以坚持使用StringComparison.CurrentCultureIgnoreCase。与此同时,您可以了解使用它的差异here

答案 6 :(得分:0)

最简单的方法是做这样的事情:

if (name.ToUpper().Contains("NO"))

答案 7 :(得分:0)

如果您使用.Contains("no"),如果某人的姓名包含" no"

,则会触发

您可以使用:

if(name.ToLower().Equals("no"))
{
    Console.WriteLine("\nFine, don't put your name in");
}