Отформатируйте строку в столбцы

Есть ли прохладный способ взять что-то вроде этого:

Customer Name - City, State - ID
Bob Whiley - Howesville, TN - 322
Marley Winchester - Old Towne, CA - 5653

и формат это к чему-то вроде этого:

Customer Name     - City,       State - ID
Bob Whiley        - Howesville, TN    - 322
Marley Winchester - Old Towne,  CA    - 5653

Используя команды формата строки?

Я не слишком одержим тем, что сделать, если Вы очень длинны. Например, это было бы в порядке мной:

Customer Name     - City,       State - ID
Bob Whiley        - Howesville, TN    - 322
Marley Winchester - Old Towne,  CA    - 5653
Super Town person - Long Town Name, WA- 45648 

Обеспечить некоторый контекст. У меня есть выпадающее поле, которое показывает информацию, очень похожую на это. Прямо сейчас мой код для создания объекта в выпадающих взглядах как это:

public partial class CustomerDataContract
{
    public string DropDownDisplay
    {
        get
        {
             return  Name + " - " + City + ",  " + State + " - " + ID;
        }
    }
}

Я ищу способ отформатировать это лучше. Какие-либо идеи?


Это - то, с чем я закончил:

HttpContext.Current.Server.HtmlDecode(
    String.Format("{0,-27} - {1,-15}, {2, 2} - {3,5}", 
    Name, City, State, ID)
    .Replace(" ", " "));

HtmlDecode изменяется на пространство, которое может противостоять форматированию удаления пространства выпадающего списка.

38
задан Vaccano 5 June 2010 в 03:05
поделиться

1 ответ

Вы также можете указать количество столбцов, занимаемых текстом как выравнивание, используя Console.WriteLine или используя String.Format :

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

Число указывает количество столбцов, которые вы хотите использовать, а знак указывает выравнивание ( - ] для выравнивания по левому краю, + для выравнивания по правому краю). Итак, если вы знаете количество доступных столбцов, вы можете написать, например, что-то вроде этого:

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

Если вы хотите вычислить количество столбцов на основе всего списка (например, самого длинного имени), тогда вы необходимо получить это число заранее и передать его в качестве параметра в DropDownDisplay - это невозможно сделать автоматически.

63
ответ дан 27 November 2019 в 03:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: