【问题标题】:Find the matching word C#找到匹配的单词 C#
【发布时间】:2011-08-29 00:06:10
【问题描述】:

【问题讨论】:

    标签: c# string-matching


    【解决方案1】:

    如果您只是想查看较长的字符串是否包含特定的较短字符串,请使用String.Contains

    你的例子:

    string[] urlStrings = new string[] 
    {
        @"http://www.vkeong.com/2011/food-drink/heng-bak-kut-teh-delights-taman-kepong/#comments"
        @"http://www.vkeong.com/2009/food-drink/sen-kee-duck-satay-taman-desa-jaya-kepong"
        @"http://www.vkeong.com/2008/food-drink/nasi-lemak-wai-sik-kai-kepong-baru/"
    }
    
    foreach(String url in urlStrings)
    {
        if(url.Contains("nasi-lemak"))
        {
            //Your code to handle a match here.
        }
    }
    

    【讨论】:

      【解决方案2】:

      您想要String.IndexOf 方法。

      foreach(string url in url_list)
      {
          if(url.IndexOf("nasi-lemak") != -1)
          {
              // Found!
          }
      }
      

      【讨论】:

      • 我不得不问:为什么这比 .Contains 更可取?
      • @AllenG - 也许是为了这个stackoverflow.com/questions/498686/…
      • 嗯,是的,按道理来说,仅仅找到索引比找到索引然后验证结果不是 -1 更快,但既然这正是这个解决方案正在做的事情,我看不出有什么不同。并不是说这是一个糟糕的解决方案,只是寻找一个我会这样做而不是本机 .Contains 的原因,以查看 String 是否包含某个子字符串。
      • 这只是一种可能的解决方案。可读性,是的,我可能会选择.Contains
      【解决方案3】:

      当然,我们还需要一个 LINQ 答案:)

      var matches = urlStrings.Where(s => s.Contains("nasi-lemak"));
      
      // or if you prefer query form. This is really the same as above
      var matches2 = from url in urlStrings
                     where url.Contains("nasi-lemak")
                     select url;
      
      // Now you can use matches or matches2 in a foreach loop
      foreach (var matchingUrl in matches)
           DoStuff(matchingUrl);
      

      【讨论】:

      • 本例中我的偏好是第一个
      猜你喜欢
      • 2012-06-29
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2022-07-13
      • 1970-01-01
      相关资源
      最近更新 更多