1

値を返し、次のようなテキストから上書きしたい: 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 レシピ_id=666 祝福された=0 weight=0 default_action=action_recipe consumer_type=consume_type_stackable initial_count=1 maximum_count=1 soulshot_count=0 spiritshot_count=0

私は何を間違っていますか?ありがとうございました

4

1 に答える 1

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";
于 2013-10-24T16:34:17.493 に答える