1

我有一个由两列组成的文件,它们将存储为字典,其中第一列将是键,第二列将是值。第二列由空格分隔,可以是任意数量的空格或制表符。

如何使用 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]);
        }

谢谢

4

3 回答 3

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]);
于 2012-05-19T06:31:55.237 回答
0

由于您的条目使用多个空白字符分隔并Split拆分为单个字符,因此您需要删除空条目。为此目的有一个单独的String.Split重载:

string[] recipesInLine = recipesLine.Split(splitChars, 
                                           StringSplitOptions.RemoveEmptyEntries);
于 2012-05-19T06:32:18.857 回答
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 的答案是一个很好的解决方案。

于 2012-05-19T06:32:29.070 回答