我有一个名为simple的列表,其所有对象都在下面的表格中:
Tag: textbook - sacred texts Rec Id: 10011095
Tag: advocacy Rec Id: 10037815
Tag: advocacy Rec Id: 10043396
Tag: advocacy Rec Id: 10037795
Tag: advocacy Rec Id: 10031437
Tag: advocacy Rec Id: 10035721
Tag: advocacy Rec Id: 10024853
我有一个名为fullList的第二个列表,其中包含以下对象:
10055853 What's the Matter with the Internet? by Mark Poster academic 1 0,083
10055853 What's the Matter with the Internet? by Mark Poster computers 1 0,083
10055853 What's the Matter with the Internet? by Mark Poster internet 2 0,167
我分割simpe列表的每一行以获得两个字符串。 第一个在“Tag:”之后和“Rec Id:”之前有单词,第二个在Rec id之后有数字。
Example: tagGB = textbook - sacred texts
rec_idGB = 10011095
然后我想搜索列表fullList中的任何行(对象)是否包含两个字符串的BOTH(在同一行中)。
我试过了:
foreach (String line in nonZeroList)
{
foreach (String line2 in Gblist)
{
rec_idGB = line.Split('\t')[0].Substring(4).Trim();
tagGB = line.Split('\t')[2].Substring(7).Trim();
if (line.Contains(rec_idGB) == false && line.Contains(tagGB) == false)
{
}
}
}
但是我得到了许多不包含该字符串的行。 我想在resList的同一行中仅将rec_idGB和tagGB作为一个resutl。有什么建议吗?
答案 0 :(得分:1)
我想在recList的同一行中仅将rec_idGB和tagGB作为一个resutl。
所以你想要simpleList中的所有行都不能与fullList中的任何行匹配? (或者你想要fullList中的每一行获取simpleList中不匹配的所有行?我猜测不是。)
foreach (string line in simpleList)
{
string rec_idGB = line.Split('\t')[0].Substring(4).Trim();
string tagGB = line.Split('\t')[2].Substring(7).Trim();
bool thereIsAMatch = false;
foreach (string line2 in fullList)
{
if (line2.Contains(rec_idGB) && line2.Contains(tagGB))
{
thereIsAMatch = true;
break;
}
}
if(!thereIsAMatch)
{
// This is what you want?
}
}
答案 1 :(得分:0)
尝试我的线程: filtering values from string after/before certain word in c#
解决方案是使用正则表达式
不完全相同的问题,但我认为你会像我一样轻松找到解决方案
答案 2 :(得分:0)
您不应该与line2
而不是line
进行比较吗?您从line
解析,然后检查它是否包含在您刚解析出的line
中。
例如:
if (line2.Contains(rec_idGB) == false && line2.Contains(tagGB) == false)
或者它可能是另一种方式......你想从line2
解析并与line
进行比较,但不是很确定。