C#解析字符串拆分

时间:2012-05-19 06:27:28

标签: c# string parsing split whitespace

我有一个由两列组成的文件,这些列将存储为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]);
        }

由于

3 个答案:

答案 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的答案是一个很好的解决方案。