Format a string into columns

后端 未结 2 1987
别跟我提以往
别跟我提以往 2020-11-29 04:35

Is there a cool way to take something like this:

Customer Name - City, State - ID
Bob Whiley - Howesville, TN - 322
Marley Winchester - Old Towne, CA - 5653
相关标签:
2条回答
  • 2020-11-29 04:55

    In addition to Tomas's answer I just want to point out that string interpolation can be used in C# 6 or newer.

    // with string format
    var columnHeaders1 = string.Format($"|{0,-30}|{1,-4}|{2,-15}|{3,-30}|{4,-30}|{5,-30}|{6,-30}", "ColumnA", "ColumnB", "ColumnC", "ColumnD", "ColumnE", "ColumnF", "ColumnG");
    
    // with string interpolation
    var columnHeaders2 = $"|{"ColumnA",-30}|{"ColumnB",-4}|{"ColumnC",-15}|{"ColumnD",-30}|{"ColumnE",-30}|{"ColumnF",-30}|{"ColumnG",-30}";
    
    0 讨论(0)
  • 2020-11-29 05:12

    You can specify the number of columns occupied by the text as well as alignment using Console.WriteLine or using String.Format:

    // Prints "--123       --"
    Console.WriteLine("--{0,-10}--", 123);
    // Prints "--       123--"
    Console.WriteLine("--{0,10}--", 123);
    

    The number specifies the number of columns you want to use and the sign specifies alignment (- for left alignment, + for right alignment). So, if you know the number of columns available, you could write for example something like this:

    public string DropDownDisplay { 
      get { 
        return String.Format("{0,-10} - {1,-10}, {2, 10} - {3,5}"),
          Name, City, State, ID);
      } 
    } 
    

    If you'd like to calculate the number of columns based on the entire list (e.g. the longest name), then you'll need to get that number in advance and pass it as a parameter to your DropDownDisplay - there is no way to do this automatically.

    0 讨论(0)
提交回复
热议问题