【问题标题】:Splitting a list<string> item and formatting it out拆分 list<string> 项目并将其格式化
【发布时间】:2011-09-19 11:51:13
【问题描述】:

我有一个 List 正在循环中填充类似这样的内容:

myList.Add("john,smith,50,actor");

显然我只是写了纯字符串,它们实际上是一些变量。现在我想做的是使用 Stringbuilder 和 StringWriter 将它导出到一个文本文件,我认为我可以管理它(已经做过类似的事情)。

所以我希望我的文本文件看起来像这样:

NAME    SURNAME      AGE      WORK
john    smith        50       actor

等等。你能帮我找出这个案例的 foreach 循环吗?

【问题讨论】:

  • 下面的代码是正确的,但是添加“-”不好,你应该在分割的字符串“tab”之间插入

标签: c# .net string list stringbuilder


【解决方案1】:
const string Format = "{0,-10} {1,-10} {2,-10} {3,-10}";

var myList = new List<string>();
myList.Add("john,smithhh,50,actor");
myList.Add("a,b,c,d");

var res = myList.Select(i => i.Split(','));

Console.WriteLine(Format, "NAME", "SURNAME", "AGE", "WORK");
foreach (var line in res)
{
    Console.WriteLine(Format, line[0], line[1], line[2], line[3]);
}

输出:

NAME       SURNAME    AGE        WORK
john       smithhh    50         actor
a          b          c          d

【讨论】:

    【解决方案2】:

    这里是如何创建一个我们或你的List&lt;string&gt;的文本文件:

    var path = @"C:\test.txt";
    var streamWriter = File.Exists(path) ? File.AppendText(path) : File.CreateText(path);
    using (streamWriter)
    {
        streamWriter.WriteLine("NAME\tSURNAME\tAGE\tWORK");
        foreach (string s in myList)
        {
            streamWriter.WriteLine(s.Replace(",", "\t"));
        }
    }
    

    【讨论】:

      【解决方案3】:

      因为你已经有了分隔符(","),所以你可以直接做以下以获得更好的性能,不需要转换:

      var result = new StringBuilder();
      result.AppendLine("NAME\tSURNAME\tAGE\tWORK");
      myList.ForEach(i => result.AppendLine(i.Replace(",", "\t")));
      System.IO.File.WriteAllText("foo.txt", result.ToString());
      

      【讨论】:

        【解决方案4】:

        你可以将它们拆分成这样的字符串:

        String[] strings = myList[i].Split(',');
        

        然后像这样单独获取它们:

        for(int i = 0; i < strings.Count; i++)
        {
            file.Write(strings[i] + " ");
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-30
          • 2019-08-08
          • 1970-01-01
          • 2019-01-14
          • 2017-03-21
          • 1970-01-01
          • 2012-03-05
          相关资源
          最近更新 更多