使用C#从文本文件中获取值

时间:2011-07-20 20:33:01

标签: c#

我有一个包含以下数据的文本文件:

name = Very well sir
age = 23
profile = none
birthday= germany
manufacturer = Me

我想获得个人资料,生日和制造商的价值,但似乎无法做到正确。我成功将该文件包含在我的程序中,但它停止了。我无法弄清楚如何清理文本文件。

这是我目前的代码:http://sv.paidpaste.com/HrQXbg

3 个答案:

答案 0 :(得分:3)

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main()
    {
        var data = File
            .ReadAllLines("test.txt")
            .Select(x => x.Split('='))
            .Where(x => x.Length > 1)
            .ToDictionary(x => x[0].Trim(), x => x[1]);

        Console.WriteLine("profile: {0}", data["profile"]);
        Console.WriteLine("birthday: {0}", data["birthday"]);
        Console.WriteLine("manufacturer: {0}", data["manufacturer"]);
    }
}

答案 1 :(得分:0)

我建议不要使用ReadToEnd,读取每一行并执行string.Split('='),然后在每行文本上执行string.Trim()。每行应该留下2个值,第一个是键,第二个是值。

例如,在你的阅读循环中:

List<string[]> myList = new List<string[]>();
string[] splits = nextLine.Split('=');
if (splits.Length == 2)
    myList.Add(splits);

答案 2 :(得分:0)

首先需要拆分成行然后拆分行:

StreamReader reader = new StreamReader(filePath);
string line;
while(null != (line=reader.Read())
{
    string[] splitLine = strLines.Split('='); 
    //Code to find specific items based on splitLine[0] - Example
    //TODO: Need a check for splitLine length
    case(splitLine[0].ToLower().Trim())
    {
        case "age": { age = int.Parse(splitLine[1]);
    }
}

reader.Dispose();

这应该是你的良好开端。