我在C#中遇到File.WriteAllLines问题

时间:2016-10-24 19:13:36

标签: c#

*我知道我需要一个内容数组字符串,但我在实现它时遇到了麻烦。

Dictionary<string, string> dictionary = new Dictionary<string, string>();
string[] array = File.WriteAllLines("settings.cfg");
for (int i = 0; i < array.Length; i++)
{
    string text = array[i];
    if (!text.StartsWith("/") && text.Contains(":"))
    {
        string[] array2 = text.Split(new char[]
        {
            ':'
        });
        dictionary.Add(array2[0], array2[1]);
    }
}

*您如何实施string[]内容?

1 个答案:

答案 0 :(得分:1)

执行此类任务时,请尝试使用 Linq 。你必须

  1. 阅读文件
  2. 过滤掉
  3. 将每行代表作为键和值(仅在您的情况下拆分)
  4. 将结果实现作为字典
  5. 这样的事情:

       var dictionary = File
         .ReadLines("settings.cfg")
         .Where(line => !line.StartWith("/") && line.Contains(":"))
         .Select(line => line.Split(new char[] {':'}))
         .ToDictionary(items => items[0], items => items[1]);
    

    如果你想要Dictionary<string, string[]>作为结果

      

    &#34;您如何实施string[]内容?&#34;

    你所要做的就是修改最后一行:

       var dictionary = File
         .ReadLines("settings.cfg")
         .Where(line => !line.StartWith("/") && line.Contains(":"))
         .Select(line => line.Split(new char[] {':'}))
         .ToDictionary(items => items[0], items => items.Skip(1).ToArray());
    

    修改:如果您想将现有馆藏保存到文件中,请通过File.WriteAllLines正确的语法

      string[] SaveStrings = ...
    
      File.WriteAllLines("settings.cfg", SaveStrings);