【问题标题】:C# How to be able to put "text" like TeXT and it still runs the IfC# 如何能够像 TeXT 一样放置“文本”并且它仍然运行 If
【发布时间】:2017-02-13 17:09:28
【问题描述】:

我有一本 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好吧,不要输入你的名字”) 但是如果你把“no”当成“No”“NO”“nO”它就没有像name这样的代码。包含无论你如何放置文本它都会运行它的地方

喜欢 SmallBasic Text.ConvertToLowerCase 会将您的文本转换为小写,然后运行 ​​IF

谢谢!

【问题讨论】:

  • Contains 将为“Juno”返回 true,因为“No”在“Juno”中。

标签: c# string if-statement console


【解决方案1】:

你应该把Contains改成Equals,如果不是像Noel这样的名字会输出“好吧,不要把你的名字放进去”

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

}

【讨论】:

    【解决方案2】:

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

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

    但是你为什么不喜欢“Tino”或“Nora”这样的名字呢?更好地比较整个字符串,而不是只检查它是否包含“no”:

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

    【讨论】:

      【解决方案3】:

      只需使用 name.ToLower() 方法,这将使文本全部小写。因此,当您比较“否”或“是”时,您不必担心输入是否区分大小写。

      【讨论】:

      • 为什么选择 ToLower() 而不是 ToUpper()?我认为 ToUpper() 始终是首选方法?
      • 只要你的用法一致,它们是等价的。
      • 使用 ToLower 很好,但 OP 更大的问题是他们使用 Contains 而不是只使用 ==Equals,这需要指出。
      【解决方案4】:

      使用 ToLower()

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

      【讨论】:

        【解决方案5】:

        我会回答原来的问题:

        是否有类似名称的代码。包含无论您如何放置文本都无关紧要的地方

        是的:

        bool contains = name.IndexOf("no", StringComparison.OrdinalIgnoreCase) >= 0;
        

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

        但是,正如其他人指出的那样,Contains() 会给您带来许多误报。你应该改用.Equals()

        【讨论】:

          【解决方案6】:

          使用 Equals 方法比较您的值,而不是检查是否包含。在忽略大小写时,您可以从三种变体中选择相等性,它们是当前文化大小写忽略、不变文化大小写忽略和序数大小写忽略。

          您的问题似乎与文化无关,因此您可以坚持使用StringComparison.CurrentCultureIgnoreCase。同时你可以了解使用它的不同之处here

          【讨论】:

            【解决方案7】:

            最简单的方法是这样做:

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

            【讨论】:

            • 不使用 ToLower 更多的是使用 ToLower 然后 ToUpper 给出不同结果的语言的问题。在这种情况下,因为您不仅知道语言,而且您要比较的单词,都可以。无论哪种方式,你都不应该使用Contains
            【解决方案8】:

            如果你使用.Contains("no"),它会在某人的名字包含“no”时触发

            你可以用这个:

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

            【讨论】:

              猜你喜欢
              • 2015-08-03
              • 2019-09-07
              • 2016-02-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-09-08
              • 1970-01-01
              • 2022-09-29
              相关资源
              最近更新 更多