簡體   English   中英

從文本文檔C#添加到字典中

[英]Adding to the dictionary from a text document C#

我需要通過=逐行從文本文檔中讀取內容,並將其添加到字典中。 你能幫我嗎?

using (StreamReader sr = new StreamReader("slovardata.txt"))
{
    string _line;
    while ((_line = sr.ReadLine()) != null)
    {
        string[] keyvalue = _line.Split('=');
        if (keyvalue.Length == 2)
        {
            slovarik.Add(keyvalue[0], keyvalue[1]);
        }
    }
}

對於簡單的文本文件讀取操作,您可以使用如下代碼:

注意: 請確保您的密鑰是唯一的,否則您將獲得-

System.ArgumentException:已添加具有相同鍵的項。

string[] FileContents = File.ReadAllLines(@"c:\slovardata.txt");
 Dictionary<string, string> dict = new Dictionary<string, string>();     
 foreach (string line in FileContents)
    {
       var keyvalue = Regex.Match(line, @"(.*)=(.*)");
       dict.Add(keyvalue.Groups[1].Value, keyvalue.Groups[2].Value);
    }
 foreach (var item in dict)
    {
       Console.WriteLine("Key : " + item.Key + "\tValue : " + item.Value);
    }

您可以使用File.ReadAllLines讀取文件的所有行,並將每一行拆分為鍵和值后,將其添加到字典中,如下所示:

警告:它可能會忽略某些行而不會引發任何異常,並且可能引發參數異常“已添加具有相同鍵的項”

var lines = System.IO.File.ReadAllLines("slovardata.txt");
lines.Select(line=>line.Split('='))
     .Where(line=>line.Length ==2)
     .ToList()
     .ForEach(line=> slovarik.Add(line[0],line[1]));

順便說一句, .ForEach方法造成了大量垃圾(在大型列表中),如果沒有重復的鍵,則可以使用以下命令:

var slovarik = lines.Select(line=>line.Split('='))
    .Where(line=>line.Length ==2)
    .ToDictionary(line[0],line[1]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM