如何将输入中的每个单词与列表和 return bool 进行比较

How to compare the each word in input with the list and return bool


我的位置列表有这些值:

Saudi    
Arabia    
Tokyo     
India    
Germany

我的问题是,当我以沙特阿拉伯的身份提供输入时,它应该输入输入中的每个单词并与位置列表进行比较,如果列表中存在任何一个单词,它应该给出 true 并且也只能使用 equals 方法。请帮忙。

你可以这样做


    using System.Linq;
    LocationCheckList.Any(x=> item.Split(' ').Contains(x))

但要注意“韩国 vs 南非”

首先,让我们只读取文件一次:

   using System.Linq;

   ... 

   // HashSet.Contains is faster then List.Contains: O(1) vs. V(N) 
   private static HashSet<string> s_Words = new HashSet<string>(File
     .ReadLines(@"C:\list\LocationCheckList")
     .Where(line => !string.IsNullOrWhiteSpace(line))
     .Select(item => item.Trim()), 
        StringComparer.OrdinalIgnoreCase
   );

那么您可以轻松查看:

   public static bool isExactLocation(string item) {
     return item
       ?.Split(' ', StringSplitOptions.RemoveEmptyEntries)
       ?.All(word => s_Words.Contains(word)) ?? null;
   } 

编辑:如果你坚持List<strint>forforeach)循环:

   private static List<string> s_Words = File
     .ReadLines(@"C:\list\LocationCheckList")
     .Where(line => !string.IsNullOrWhiteSpace(line))
     .Select(item => item.Trim())
     .ToList();

然后我们可以循环...

   public static bool isExactLocation(string item) {
     if (null == item)
       return false;

     string[] words = item
       .Split(' ', StringSplitOptions.RemoveEmptyEntries);

     foreach (string word in words) {
       bool found = false;

       foreach (string location in s_Words) {
         if (location.Equals(word, StringComparison.OrdinalIgnoreCase)) {
           found = true;

           break;  
         } 
       }

       if (!found)
         return false;
     }   

     return true;  
  }