【问题标题】:How to check whether string contains specific string in c#如何检查字符串是否包含c#中的特定字符串
【发布时间】:2020-02-06 13:49:11
【问题描述】:

我想检查字符串是否包含另一个字符串。 例如:我在一个列表中有“程序管理”字符串,在另一个列表中有“计算机程序”字符串。结果,我想返回“计算机程序”。我已经尝试过以下事情

List<string> strlist1 = new List<string>();
strlist1.Add("program mangement");
strlist1.Add("english language");

List<string> strlist2 = new List<string>();
strlist2.Add("computer program");
strlist2.Add("computer");
strlist2.Add("test");

foreach(var keys in strlist2)
{
  var result = strlist1.Where(x=>x.Contains(keys)).FirstOrDefault();     
  Console.WriteLine(result);     
 }

我希望结果为“计算机程序”,因为程序字包含在第二个列表中。但它没有返回任何结果。任何人都可以建议如何返回所需的结果..

【问题讨论】:

  • 您能否澄清一下预期的输出是什么,以及这个 sn-p 的输出与它有何不同?
  • 使用 String.Split 和 String.Contains...
  • 当你做 strlist1.Where(x=>x.Contains(keys)).FirstOrDefault();你基本上是在说“计算机程序是否包含计算机程序分析”,这显然是错误的......当你做另一个时 strlist1.Where(x=>keys.Contains(x)).FirstOrDefault();现在你颠倒了情况,现在说“计算机程序分析是否包含计算机程序”,这显然是正确的。
  • 更新了问题@Mureinik

标签: c# string list


【解决方案1】:

你需要检查computer program analytics是否包含computer program

foreach (var keys in strlist2)
{
     var result = strlist1.Where(x => keys.Contains(x)).FirstOrDefault();
     Console.WriteLine(result);
}

更新:

如果需要检查单词而不是整个句子是否包含在另一个数组中,那么我们可以将句子拆分为单词数组并检查它们:

foreach (var keyList2 in strlist2)
{
    foreach (var keyList1 in strlist1)
    {
         var splittedWords_1= keyList1.Split(' ');
         var splittedWords_2 = keyList2.Split(' ');
         bool containsValues = splittedWords_1.Any(s1 => splittedWords_2.Contains(s1));                    
         if (containsValues)
         {
              Console.WriteLine(keyList2);
         }                   
    }                
}

【讨论】:

  • @Kishore 在strlist1 中没有这样的字符串computer program
  • 是的,但是程序字在那里我想匹配那个并返回结果
【解决方案2】:

希望对你有帮助

var found = false;
foreach (var s in strlist1)
{
    found = strlist2.Any(c => c.Contains(s));
    if (found) break;
}
Console.WriteLine(found.ToString());

【讨论】:

    猜你喜欢
    • 2014-01-08
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2021-11-21
    • 2022-06-14
    • 1970-01-01
    • 2011-01-21
    • 2012-10-25
    相关资源
    最近更新 更多