我有这三个清单。
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"}
我想浏览token
中的每个tokens
并删除token
中包含set
中任何元素的每个字符串。
tokens
列表包含一些token
个元素。一个token
(比如说token1)有一个像这样的元素。
{..., " <set picURL="http://magiccards.info/extras/token/Gatecrash/Domri-Rade-Emblem.jpg" picURLHq="" picURLSt="">GTC</set>", ...}
另一个token
(比如说令牌2)有这两个元素。
{..., " <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"}
。
如何浏览token
中的每个tokens
并删除包含sets
中任何字符串元素的字符串元素?那么,在那个过程之后,token1上面没有那个元素,而token2只会有第二个呈现的元素?
这会遍历token
中的每个tokens
,并删除token
中包含字符串"GTC"
的所有元素。
foreach (var token in tokens)
{
token.RemoveAll(str => str.Contains("GTC"));
}
我查看了其他一些问题并发现了这个问题,但它不起作用。
foreach (var token in tokens)
{
token.RemoveAll(sets.Contains);
}
感谢您的帮助。
答案 0 :(得分:5)
foreach (var token in tokens)
{
token.RemoveAll(str => sets.Any(s => str.Contains(s)));
}