Отображение строк с использованием композитного форматирования – Hey, Scripting Guy! Blog

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о композитном форматировании строк в Windows PowerShell

Заметка: Это вторая статья в серии постов о методах и операторах форматирования в Windows PowerShell. Первая статья, Основы форматирования в PowerShell, рассказывает о вариантах применения статического метода Format класса String и оператора Windows PowerShell –f с использованием возможностей композитного форматирования.

Форматируем строковые объекты

Первое, о чем я хочу поговорить – это использование определителей формата (format specifiers) для задания того, как отображаются определенные объекты. Ниже приведен синтаксис элемента форматирования:

{index:formatString}

Заметка: Более подробное рассмотрение темы композитного форматирования вы можете найти в статье Composite Formatting на MSDN.

Используем строки формата

Множество определителей формата может быть указано прямо в элементе форматирования. В следующих примерах приведено несколько различных вариантов форматирования.

В первом примере используется статический метод WriteLine класса .NET Framework System.Console. Второй пример выполняет ту же самую операцию с использованием оператора Windows PowerShell –f. В последнем примере мы используем статический метод Format класса .NET Framework System.String. Об использовании оператора –f и метода Format рассказывалось в предыдущей статье серии: Основы форматирования в PowerShell.

Пример 1. Задаем строку формата с использованием статического метода WriteLine

Статический метод WriteLine класса .NET Framework System.Console выводит информацию прямо в консоль Windows PowerShell, а не передает ее по конвейеру в виде объекта. В этом он схож с командлетом Write-Host. Команда содержит элемент форматирования с индексом 0, соответствующим первому объекту в списке. Также в команде указывается определитель формата “C”. “C” – это определитель стандартного формата числовых данных (Standard Numeric Format Strings), а именно — определитель формата денежных единиц (Currency Format Specifier). Объект, передающийся для форматирования – число 100. Ниже приведен код и результат его выполнения.

PS C:\> [console]::writeline(«The price is {0:C}», 100)

The price is $100.00

Пример 2. Задаем строку формата с использованием оператора форматирования Windows PowerShell (-f)

При использовании оператора форматирования, строка формата должна быть расположена слева от оператора, а список объектов – справа. Мы зададим ту же строку формата и тот же объект форматирования.

PS C:\> «The price is {0:C}» -f 100

The price is $100.00

Пример 3. Задаем строку формата с использованием статического метода Format

Метод Format класса String работает точно таким же образом, как и метод WriteLine класса System.Console за одним важным исключением — он возвращает объект строки. Т.е. он передает возвращаемую им строку по конвейеру Windows PowerShell. Что касается всего остального, его функциональность полностью соответствует методу WriteLine и, соответственно, мы получим точно такой же вывод.

PS C:\> [string]::Format(«The price is {0:C}»,100)

The price is $100.00

Задаем выравнивание

Для того, чтобы отформатировать вывод в виде “ячеек”, я задам в элементе форматирования компонент выравнивания (alignment component). Этот компонент не является обязательным. Как вы можете видеть, в трех предыдущих примерах мы его не использовали. Компонент выравнивания – это целое число со знаком, задающее ширину столбца. Если его значение меньше, чем фактическая длина выводимой строки – он игнорируется. Если значение компонента задано со знаком плюс (т.е. больше нуля), элемент выравнивается по правому краю, если значение со знаком минус (меньше нуля) — элемент выравнивается по левому краю. Варианты использования выравнивания приведены в следующих примерах.

Пример 4. Выравниваем дату относительно строки

В этом примере я задаю две переменные. Затем я вызываю статический метод WriteLine класса .NET Framework System.Console. Первый элемент форматирования замещается первым объектом (значением переменной $attendee) и помещается в начало строки. Далее выводится символы, статически заданные в строке форматирования (“attended”), и специальные символы — “возврат каретки” и “новая строка” (“rn”) для перехода на новую строку. Далее указан элемент форматирования, замещаемый вторым объектом, который представляет из себя результат выполнения командлета Get-Date, переведенный в строку с указанием определителя формата “d”. “d” – это определитель стандартного формата даты и времени, представляющий короткий формат даты в соответствии с используемыми региональными настройками.

Во втором элементе форматирования, через запятую после индекса указано число 18.

{1,18}

Так как указанное число больше 0, это означает, что второй объект списка будет расположен в границах ячейки шириной 18 символов с выравниванием по правому краю.

Код и его результаты приведены ниже.

PS C:\> $attendee = «Ed Wilson»

PS C:\> [console]::Writeline(«{0} attended `r`n{1,18}», $attendee, (Get-Date).tostring(‘d’))

Ed Wilson attended

3/7/2013

Пример 5. Более удобный способ выравнивания даты по строке

В этом примере я делаю практически то же самое, что и в предыдущем. Отличие же заключается во втором элементе форматирования, в третьей позиции которого я указываю определитель короткого формата даты – “d”. Тем самым я задаю, что объект даты, возвращенный командлетом Get-Date, должен быть представлен в указанном формате. В этом случае вызов метода ToString уже не является необходимым, что делает код более понятным по сравнению с четвертым примером.

PS C:\> $attendee = «Ed Wilson»

PS C:\> [console]::Writeline(«{0} attended `r`n{1,18:d}», $attendee, (Get-Date))

Ed Wilson attended

3/7/2013

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/12/use-powershell-to-format-strings-with-composite-formatting.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s