【问题标题】:C# Array contains partialC# 数组包含部分
【发布时间】:2010-07-23 15:05:58
【问题描述】:

如何判断一个字符串数组是否包含字符串的某个部分? 我有这样的数组

String[] stringArray = new [] { "abc@gmail.com", "cde@yahoo.com", "@gmail.com" };
string str = "coure06@gmail.com"

if (stringArray.Any(x => x.Contains(str)))
{
    //this if condition is never true
}

我想在 str 包含完全或任何数组项的一部分的字符串时运行这个 if 块。

【问题讨论】:

    标签: c#


    【解决方案1】:

    假设您有可用的 LINQ:

    bool partialMatch = stringArray.Any(x => str.Contains(x)); 
    

    即使没有 LINQ 也很容易:

    bool partialMatch = Array.Exists(stringArray, x => str.Contains(x));
    

    或使用 C# 2:

    bool partialMatch = Array.Exists(stringArray,
          delegate(string x) { return str.Contains(x)); });
    

    如果您使用的是 C# 1,那么您可能不得不以艰难的方式来做这件事 :)

    【讨论】:

    • Jon 的代码在这里可以正常工作。你的例子中遗漏了一些东西。
    【解决方案2】:

    如果您要查找数组中的特定字符串是否仅包含“@gmail.com”而不是“abc@gmail.com”,您有几个选择。

    在输入方面,这里有各种关于 SO 的问题,这些问题将为您指明需要前往的方向,以验证您的输入是否为有效的电子邮件地址。

    如果你只能检查后端,我会做这样的事情:

    emailStr = "@gmail.com";
    if(str.Contains(emailStr) && str.length == emailStr.length)
    {
      //your processing here
    }
    

    您也可以使用正则表达式匹配,但我对它还不够熟悉,无法告诉您需要什么模式。

    如果您正在寻找包含“@gmail.com”的任何内容,Jon 的答案是您的最佳选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-13
      • 2018-02-25
      • 2015-11-15
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      相关资源
      最近更新 更多