我有一个由两列组成的文件,这些列将存储为Dictionary,其中第一列是键,第二列是值。第二列由空格分隔,空格可以是任意数量的空格或制表符。
如何使用Split()函数将其存储在我的字典中?
recipesFile = new StreamReader(recipesRes.Stream);
char[] splitChars = {'\t', ' '};
while (recipesFile.Peek() > 0)
{
string recipesLine = "";
recipesLine = recipesFile.ReadLine();
string[] recipesInLine = recipesLine.Split(splitChars);
recipes.Add(recipesInLine[0], recipesInLine[1]);
}
由于
答案 0 :(得分:4)
recipesLine.Split(splitChars, StringSplitOptions.RemoveEmptyEntries);
此外,您的代码一般可以缩短为
var myDictionary = File.ReadLines(myFileName)
.Select(l => l.Split(new []{'\t', ' '}, StringSplitOptions.RemoveEmptyEntries))
.ToDictionary(a => a[0], a => a[1]);
答案 1 :(得分:0)
由于您的条目使用多个空白字符和单个字符上的Split
拆分而分隔,因此您需要删除空条目。为此目的有一个单独的String.Split
overload:
string[] recipesInLine = recipesLine.Split(splitChars,
StringSplitOptions.RemoveEmptyEntries);
答案 2 :(得分:0)
首先,使用file.readlines方法。然后你就可以使用linq了。 http://msdn.microsoft.com/en-us/library/dd383503.aspx
Jon Skeet和Marc Gravell都有很好的例子来使用linq来读取文件, Reading a file line by line in C#
然后使用ToDictionary - Yuriy的答案是一个很好的解决方案。