如何将输入中的每个单词与列表和 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>
和for
(foreach
)循环:
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;
}
我的位置列表有这些值:
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>
和for
(foreach
)循环:
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;
}