День двести тридцать третий. #ЗаметкиНаПолях
Форматирование строк
Статический метод
- Выравнивание – указывается минимальная ширина элемента. При этом выравнивание по правому краю обозначается положительным значением, а; выравнивание по левому краю - отрицательным. Указывается через запятую после индекса элемента.
- Строка формата для значения. Чаще всего используется для значений даты и времени или чисел. Например, чтобы отформатировать дату в соответствии с ISO-8601, вы можете использовать строку формата "
Например:
Для вывода в консоль отформатированной строки
В общих чертах, локализация - это задача убедиться, что ваш код работает правильно для всех ваших пользователей, независимо от того, где они находятся. В .Net для целей локализации применяется класс
Следующий код выведет в консоль список всех культур, сохранённых на данной машине, и отформатирует дату в соответствии с каждой культурой:
Чтобы создать объект культуры, нужно использовать метод
Дословные (verbatim) строки
Символ
Форматирование строк
Статический метод
Format
класса string
принимает составную строку формата, включающую элементы формата, а затем аргументы для замены этих элементов. Например:string.Format("Привет, {0}.", name);имеет один элемент формата {0} и заменяет его на значение переменной name. Каждый элемент формата в составной строке формата указывает индекс аргумента, который должен быть отформатирован, но он также может указывать следующие параметры для форматирования значения:
- Выравнивание – указывается минимальная ширина элемента. При этом выравнивание по правому краю обозначается положительным значением, а; выравнивание по левому краю - отрицательным. Указывается через запятую после индекса элемента.
- Строка формата для значения. Чаще всего используется для значений даты и времени или чисел. Например, чтобы отформатировать дату в соответствии с ISO-8601, вы можете использовать строку формата "
yyyy-MM-dd
". Чтобы отформатировать число в качестве значения валюты, вы можете использовать строку формата "C
". Значение строки формата зависит от типа форматируемого значения и указывается после двоеточия.Например:
decimal price = 95.25m;Выведет:
string tag = string.Format("Цена: {0,9:C}", price);
Console.Write(tag);
Цена: $95.25Формат оставляет 9 символов для значения, выравнивая его по правому краю, а также добавляет символ валюты.
Для вывода в консоль отформатированной строки
Console.Write
можно использовать непосредственно аналогично string.Format
:Console.Write("Цена: {0,9:C}", price);Локализация
В общих чертах, локализация - это задача убедиться, что ваш код работает правильно для всех ваших пользователей, независимо от того, где они находятся. В .Net для целей локализации применяется класс
CultureInfo
. Он содержит настройки культур для языка (вариации языка) или страны: летоисчисление, название дней недели и месяцев, разделители чисел, символ валюты и т.п.Следующий код выведет в консоль список всех культур, сохранённых на данной машине, и отформатирует дату в соответствии с каждой культурой:
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);Заметьте, что в отличие от обычных случаев, когда дополнительный необязательный параметр добавляется в конец списка в перегруженной версии метода, культура в методе
var birthDate = new DateTime(1986, 2, 18);
foreach (var culture in cultures)
{
string text = string.Format(
culture, "{0,-15} {1,12:d}", culture.Name, birthDate);
Console.WriteLine(text);
}
string.Format
указывается первым значением. Это связано с тем, что последним значением указан параметр-массив для аргументов замены (см. https://t.me/NetDeveloperDiary/269).Чтобы создать объект культуры, нужно использовать метод
CultureInfo.GetCultureInfo
, передав в него имя культуры. Например, CultureInfo.GetCultureInfo("ru-RU")
для русского языка. Кроме того, можно использовать текущую культуру, установленную на машине с помощью статического свойства CultureInfo.CurrentCulture
. Это значение используется по умолчанию в методе string.Format
. Однако его следует использовать с осторожностью, если предполагается, что приложение будет запускаться на разных компьютерах, т.к. культуры по умолчанию на них могут различаться. Для передачи данных между компьютерами, например, даты в формате ISO-8601 (yyyy-MM-dd), можно использовать инвариантную культуру через статическое свойство CultureInfo.InvariantCulture
.Дословные (verbatim) строки
Символ
@
, поставленный перед строковым литералом, сообщает конструктору строки, что нужно игнорировать символы перевода строки и символы экранирования. При этом, чтобы использовать двойные кавычки в буквальной строке, надо удвоить символ. Таким образом строку "C:\\\"Program Files\"\\IIS"
можно записать как @"C:\""Program Files""\IIS"
.