【问题标题】:Check if string contains a number c#检查字符串是否包含数字c#
【发布时间】:2015-02-07 10:47:04
【问题描述】:

我知道有很多这样的问题。 但我真的找不到任何解决我问题的方法。

我想检查字符串是否包含特定的输入数字。请参阅以下示例:

public Boolean checkString()
{
    string input = "2.5.8.12.30";
    string intToFind = "3";

    if (input.contains(intToFind))
    {
        return true;
    }
    else
    {
        return false;
    }
}

这返回 true,但我希望它返回 false,因为 intToFind 字符串是 3 而不是 30。所以问题在于 contains()。

如何让它只搜索 3?

【问题讨论】:

  • 字符串总是用句点分隔吗?如果不是,还有哪些其他可能的格式?
  • 总是用句点分隔。
  • 我可以看到 2 个人对这个问题投了反对票。当我被否决时,我总是很好奇,所以如果你能发表评论,那就太好了!我只是想改进,似乎我犯了一个错误,或者这个问题可能有重复。

标签: c# string substring contains


【解决方案1】:

你可以使用String.Split + Contains:

bool contains3 = input.Split('.').Contains("3");

【讨论】:

  • 这仍然会返回 true
  • @SriramSakthivel:不,不会。
  • @sm.abdullah:不,不会。它是Enumerable.Contains 而不是String.Contains。它会检查是否包含完整的字符串,而不是它的一部分。
  • @TimSchmelter ah..Right :)
  • 这真的很好,我犯了同样的错误,以为它会使用 String.Contains。谢谢你的知识:)
【解决方案2】:
bool anyThree = input.Split('.').Any(str => str == "3");

【讨论】:

  • 这就是Contains 方法的用途。这会起作用,但不是直截了当的。
  • @SriramSakthivel - 你就是那个对上面的“包含”感到困惑的人,你说这不是直截了当的吗?常见..我同意我可能会在我的代码中使用 contains 解决方案,但 stackoverflow 不是“一个答案”网站..这也是一个不错的选择。
  • 困惑的是。这对你重要吗?我也没有说这不是一个好的选择。我刚刚说过,直接使用Contains。不多不少。
【解决方案3】:

您可以使用String.Split('.') 将输入拆分为一个数组。现在使用Array.contains 来检查元素是否在数组中

bool contained = input.Split('.').Contains("3");

【讨论】:

    【解决方案4】:
    string[] words = input.Split('.');
    if (words.contains("3")){do something...}
    

    【讨论】:

    • 应该是words.Contains("3")
    【解决方案5】:

    您也可以使用正则表达式,这可能有点矫枉过正。

    string str = "2.5.8.12.30";
    string strToFind = "3";
    bool contains = Regex.Match(str, string.Format(@"\W{0}\W",strToFind)).Success;
    

    【讨论】:

      猜你喜欢
      • 2012-06-27
      • 2021-12-20
      • 2013-11-20
      • 1970-01-01
      • 2018-10-03
      • 2011-01-21
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多