【发布时间】:2019-04-26 22:29:58
【问题描述】:
谁能告诉我我的代码有什么问题?
基本上,在比较words1 和words2 之后,我只需要添加从words1 到uniques 列表的唯一词。
在if 语句中,如果我删除!,那么它会找到匹配的单词(与我需要的相反)
List<string> Unique(string lines1 ,string lines2, char[] separators)
{
string[] words1 = lines1.Split(separators, StringSplitOptions.RemoveEmptyEntries);
string[] words2 = lines2.Split(separators, StringSplitOptions.RemoveEmptyEntries);
List<string> uniques = new List<string>();
for (int i = 0; i < words1.Length; i++)
{
bool match;
for (int x = 0; x < words2.Length; x++)
{
if (!words1[i].Equals(words2[x]))
{
match = true;
uniques.Add(words1[i]);
break;
}
else
{
match = false;
}
}
}
return uniques;
}
【问题讨论】:
-
一旦发现不匹配的内容,即使之前匹配过,也会将其标记为唯一。您必须检查 所有 单词,并且只有当 nothing 匹配时,它才是唯一的
-
我猜你这样做是为了学习——否则你可以使用 Linq 并做
var uniques = words1.Except(words2).ToList(); -
如果遇到这个问题并且您实际上需要“列表中不在另一个列表中的项目” - stackoverflow.com/questions/3944803/…
标签: c# string-matching