我有一本关于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
谢谢!
答案 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");
}