我想从文本中返回一个值并覆盖: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
我做错了什么? 谢谢
答案 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";