【发布时间】:2013-04-22 00:54:50
【问题描述】:
设置
我有这三个列表。
List<List<string>> tokens = new List<string>();
List<string> token = new List<string>();
List<string> sets = new List<string();
一个完整的token 列表,将在tokens 列表中。
{"<card>"",
" <name>Domri Emblem</name>",
" <set picURL="http://magiccards.info/extras/token/Gatecrash/Domri-Rade-Emblem.jpg" picURLHq="" picURLSt="">GTC</set>",
" <color></color>",
" <manacost></manacost>",
" <type>Emblem</type>",
" <pt></pt>",
" <tablerow>0</tablerow>",
" <text></text>",
" <token>1</token>",
"</card>"}
sets 列表如下所示。
{"ARB", ..., "AVR", ..., "GTC", ..., "ZEN"}
我想遍历tokens 中的每个token 并删除token 中包含set 中任何元素的每个字符串。
示例
tokens 列表有几个 token 元素。一个token(比如token1)有这样一个元素。
{..., " <set picURL="http://magiccards.info/extras/token/Gatecrash/Domri-Rade-Emblem.jpg" picURLHq="" picURLSt="">GTC</set>", ...}
另一个token(比如token2)有这两个元素。
{..., " <set picURL="http://magiccards.info/extras/token/magic-2012/pentavite.jpg" picURLHq="" picURLSt="">M12</set>",
" <set picURL="http://magiccards.info/extras/token/player-rewards-2004/pentavite.jpg" picURLHq="" picURLSt="">MI</set>", ...}
假设sets 列表被修改为仅包含{"ARB", "GTC", "M12"}。
我将如何遍历tokens 中的每个token 并删除包含sets 中任何字符串元素的字符串元素?那么,在这个过程之后,token1 将没有上面的那个元素,而 token2 将只有第二个呈现的元素?
我尝试了什么
这会遍历tokens 中的每个token,并删除token 中包含字符串"GTC" 的所有元素。
foreach (var token in tokens)
{
token.RemoveAll(str => str.Contains("GTC"));
}
我查看了其他一些问题,发现了这个,但它不起作用。
foreach (var token in tokens)
{
token.RemoveAll(sets.Contains);
}
感谢您的帮助。
【问题讨论】:
-
附注 - 您的示例看起来像 XML...如果确实是 XML,请考虑使用 XML API。
-
@AlexeiLevenkov 我不知道任何 XML API,但事后看来,它们似乎很明显会存在。谢谢,我会调查的。
-
起点 - 搜索C# XDocument - MSDN上有很多例子,这个网站上有很多问题。
-
@AlexeiLevenkov 之前的简短搜索指出我只加载一个 XML,但这些关键字给了我更多。特别是,获取标签之间的信息。就我而言,
<set>标记和其他更简单的方法可以从我的 XML 文件中提取更多信息之间的任何内容。在尝试笨拙的方法之前,我真的应该寻找(并研究)API。再次感谢这次的指导。