Форматирование строки в столбцы
Есть ли классный способ сделать что-то вроде этого:
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 изменяет в пространство, которое может выдержать форматирование пространства в раскрывающемся списке.
Ответы
Ответ 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
- там это не способ сделать это автоматически.