我有一个清单
List<string> TempList = new List<string> { "[66,X,X]", "[67,X,2]", "[x,x,x]" };
我需要从上面的列表中添加数据到字典中
Dictionary<int, int> Dict = new Dictionary<int, int>();
所以字典里应该有
Key --> 66 value --> 67
我需要从第一个字符串([66,X,X])中取66(第一个值),从第二个字符串([67,X,X])中取67(第一个值),并将其作为键值对添加到字典中。
现在,我将遵循字符串替换和循环方法来完成此操作。
在LINQ或正则表达式中有什么方法可以做到这一点吗?
5条答案
按热度按时间9cbw7uwe1#
在你说你是从一个列表的列表开始之后,我明白了你在追求什么。我在这里重用了Jaroslav的'GetNumber'函数。我写了我的样本与数组的数组的字符串,但应该工作一样.如果你有重复的键,下面的代码将抛出,我假设这是你想要的,如果你使用字典。
wribegjk2#
下面是一个同时使用
string.Split()
和Regex的例子:我怀疑你的例子是相当做作的,所以可能有一个更好的解决方案,特别是如果你需要将大量的字符串处理成键/值对(我故意硬编码索引值,因为你的例子很简单,我不想让答案过于复杂)。如果输入数据在格式上是一致的,那么你可以做出假设,比如使用固定的索引,但是如果存在一些差异的可能性,那么可能需要更多的代码来检查它的有效性。
3hvapo4f3#
您可以使用正则表达式从列表中的每个项目中提取值,如果需要,可以使用LINQ选择两个列表并将它们压缩在一起(在C# 4.0中):
如果你使用的是C# 3.5,你可以使用Eric Lippert's implementation of Zip()。
kqqjbcuj4#
如果我理解正确:你想创建像
66 -> 67, 67 -> 68, ... n -> n+1
这样的链接节点吗?我不会使用LINQ:
在代码中:
您还应该执行检查等。
示例假定列表中至少包含2个项。
eagi6jfj5#