从文本文件返回值

时间:2013-10-24 16:26:13

标签: c# text

我想从文本中返回一个值并覆盖:item_type = etcitem。我想通过以下代码返回值'etcitem':

        var data = File
                    .ReadAllLines("itemdata.txt")
                    .Select(x => x.Split('='))
                    .Where(x => x.Length > 1)
                    .ToDictionary(x => x[0], x => x[1]);

        textBox1.Text = data["item_type"];

但是返回错误:字典中没有给定的密钥。

这里有一些行:

  

item_begin etcitem 6867 [rp_sealed_draconic_leather_gloves_i] item_type = etcitem slot_bit_type = {none} armor_type = none etcitem_type = recipe recipe_id = 666 blessed = 0 weight = 0 default_action = action_recipe consume_type = consume_type_stackable initial_count = 1 maximum_count = 1 soulshot_count = 0 spiritshot_count = 0

我做错了什么? 谢谢

1 个答案:

答案 0 :(得分:0)

文件中item_type的值是什么?

新行上的每个条目或您使用的是不同的分隔符吗?从您的示例看,您需要先按标签分割。

var data = File
            .ReadAllLines("itemdata.txt")
            .SelectMany(x => x.Split('\t'))
            .Select(x => x.Split('='))
            .Where(x => x.Length > 1)
            .ToDictionary(x => x[0], x => x[1]);

尝试在调试器或其他TextBox中查看数据。

textBox2.Text = string.Join(",", data.Keys);

此外,当密钥不在字典中时,使用Dictionary(TKey, TValue).TryGetValue(TKey, out TValue)告诉用户可能会有所帮助。

string value;

textBox1.Text = data.TryGetValue("item_type", out value)
                ? value
                : "item_type not in file";