读取直到满足条件并读取下一行,将其存储为数组

时间:2012-01-19 13:24:02

标签: c#

我目前有一个conf文件,它存在以下格式:

[client]
person1,person2,person3,person4

[employee]
emp1,emp2,emp3,mp4

等等。现在我需要读取文件来存储[employee]行和数组之后的数据。

3 个答案:

答案 0 :(得分:1)

作为快速草稿,尝试这样的事情:

string[] readAllLines = File.ReadAllLines("path/to/file");
for (int i = 0; i < readAllLines.Length-1; i++)
{
    if (readAllLines[i].StartsWith("[employee]"))
    {
        string[] employees = readAllLines[i + 1].Split(',');
        // Do something
    }
}

答案 1 :(得分:1)

未经测试的代码:

static class SubstringExtensions
{  

    /// <summary>
    /// Get string value after [last] a.
    /// </summary>
    public static string After(this string value, string a)
    {
    int posA = value.LastIndexOf(a);
    if (posA == -1)
    {
        return "";
    }
    int adjustedPosA = posA + a.Length;
    if (adjustedPosA >= value.Length)
    {
        return "";
    }
    return value.Substring(adjustedPosA);
    }
}

阅读文件:

System.IO.StreamReader myFile = new System.IO.StreamReader("c:\\test.txt");
string myString = myFile.ReadToEnd();
myFile.Close();
string[] split = myString.After("[employee]").Split(',');

答案 2 :(得分:0)

不是最酷或最优雅的方式,但你描述它的方式会像这样工作。

StreamReader reader = new StreamReader("path to your config file");
string text = reader.ReadToEnd();

text = text.Substring(text.IndexOf("[employee]"), 25);
text = text.Replace("[employee]\r\n", "");

string[] array = text.Split(',');