Рубріки: Теория

Форматирование и интерполяция строк: stringformat в C#

Сергей Почекутов

Вывод на экран отформатированной строки для передачи информации — распространенная задача при разработке ПО. В C# StringFormat позволяет форматировать строки проще, быстрее и удобнее, чем при использовании конкатенации. Как этот метод работает, какие предоставляет возможности и какие есть способы форматирования — изучим в этой статье.

Содержание:

1.Как форматировать строки в C#
1.1 Описатели форматов
1.2 Валюта
1.3 Целые числа
1.4 Дробные числа
1.5 Проценты
1.6 Настраиваемые форматы
2. Использование метода ToString
3. Интерполяция строк
4. Итог по применению

Как форматировать строки в C# с помощью String.Format

Мы уже рассказывали про базовые операции, которые позволяют работать со строками в C#. Здесь мы подробнее рассмотрим форматирование строк.

Форматировать строки в C# помогает метод String.Format. Он преобразует значения объектов в строки и затем вставляет их в результирующую строку.

Пример форматирования с помощью String.Format:

string newString;
newString = string.Format("There are {0} cats in my {1} and no {2}", 2, "house", "dogs"); // There are 2 cats in my house and no dogs

Форматирование — это встраивание в строку различных элементов в заданном формате. Например, если нужно отобразить валюту, то мы подставляем к числу ее соответствующий символ — доллар, евро или другой. Если нужно показать проценты, то мы умножаем число на 100 и подставляем знак процента.

Описатели форматов

Для представления чисел в C# используются следующие описатели:

Описатель формата Описание
“C” или “c” Валюта
“D” или “d” Целое число
“E” или “e” Экспоненциальный вид
“F” или “f” Фиксированная запятая
“G” или “g” Наиболее компактная запись из двух вариантов: “E” и “F”
“P” или “p” Проценты
“X” или “x” Шестнадцатеричное представление числа
Любой другой символ Исключение FormatException

В таблице представлены лишь некоторые описатели. Подробную информацию по всем описателям и их свойствам смотрите в документации.

Мы же здесь пройдёмся по примерам использования, чтобы вы могли попробовать форматирование на практике.

String.Format также используется для преобразования даты и времени. С его помощью можно отобразить DateTime так, как вам хочется: сначала дату, сначала время, год в двузначном формате, год в четырехзначном формате.

Таблица описателей формата даты и времени с подробными объяснениями и примерами также есть в документации.

Валюта

Для форматирования валюты используется описатель “C” или “c”’. Знак валюты зависит от того, какая локаль установлена. Например, если это en-US, то в строке будет отображаться знак доллара, а если fr-FR, то знак евро.

После описателя можно указать, сколько знаков требуется отобразить после запятой.

Пример:

double number = 35.8;
string str = string.Format("{0:C2}", number); // $35.80
string str2 = string.Format("{0:C1}", number); // $35.8

Целые числа

Для форматирования целых чисел используется описатель ‘D’ или ‘d’.

Пример:

int intNum = 33;
str = string.Format("{0:d}",intNum); // 33
str = string.Format("{0:d4}", intNum); // 0033

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

Дробные числа

Для форматирования дробных чисел используется описатели “E”, “F” или “G”:

Подробнее о разнице между этими тремя описателями можно узнать из документации.

Примеры:

double dNum = 12.4567;
str = string.Format("{0:E}", dNum); // 1,245670E+001
str = string.Format("{0:E2}", dNum); // 1,25E+001
str = string.Format("{0:F3}", dNum); // 12,457
str = string.Format("{0:G}", dNum); // 12,4567

После описателя указывается, сколько знаков должно быть после разделителя (запятой в русской локали). Если количество знаков после запятой меньше, чем у числа, то число автоматически округляется в соответствии с правилами.

Проценты

Для форматирования процентов используется описатель ‘P’ или ‘p’.

Пример:

double percent = 0.45221;
str = string.Format("{0:P}", percent); // 45,22%
str = string.Format("{0:P1}", percent); // 45,2%

С помощью цифры после описателя можно управлять количеством знаком, которые будут отображаться в дробной части.

Настраиваемые форматы

C# предоставляет возможность настраивать формат вывода. Например, в качестве заместителя цифры используется символ #. С его помощью удобно представлять число как номер телефона:

long phone = 12345678910;
str = string.Format("{0:+#(###)###-##-##}", phone); // +1(234)567-89-10

Настраиваемых числовых форматов тоже много. Например, знак “.” — это разделитель. С его помощью определяется разделитель целой и дробной частей в результирующей строке. Знак “%” — заместитель процента. Есть также настраиваемые форматы даты и времени.

Полный список настраиваемых числовых форматов и форматов даты и времени с подробными объяснениями и примерами доступен в документации.

Использование метода ToString

Метод ToString позволяет получить строковое описание объекта для дальнейшего форматирования. Он работает с теми же описателями, которые доступны методу Format.

Например, принимаем число, преобразуем его в строку и форматируем — по маске превращаем число в номер телефона:

long num = 12345678910;
Console.WriteLine(num.ToString("+# (###) ###-##-##")); // +1 (234) 567-89-10

Принимаем число, используем описатель ‘C’, чтобы отобразить валюту, и указываем количество символов после запятой.

double price = 10,50;
Console.WriteLine(price.ToString("C1")); // $10,5

Интерполяция строк

Интерполяция строк — упрощенный механизм форматирования строк. Он появился в версии C# 6.0.

Интерполяция позволяет сделать код более читабельным, а также выполнять логические и математические операции с объектами непосредственно во время форматирования. Чтобы использовать интерполяцию, достаточно указать перед строкой символ доллара — $.

Простой пример:

User user = new User { Name = "Oleg", Surname = "Petrov", Age = 35 };
Console.WriteLine($"Имя {user.Name} Фамилия {user.Surname} Возраст {user.Age}"); // Имя Oleg Фамилия Petrov Возраст 35

А в этом примере мы проверяем объект. Если он равен null, то выводим дефолтное значение:

User user = null;
Console.WriteLine($"Имя {user?.Name ?? "Пусть тогда зовут Олег"}"); // Имя Пусть тогда зовут Олег

А вот пример с использованием настраиваемого формата:

long num = 12345678910;
Console.WriteLine($"{num:+# ### ### ## ##}"); // +1 234 567 89 10

Можно выполнять математические операции прямо во время форматирования:

double x = 15.59;
double y = 19.17;
Console.WriteLine($"{x} + {y} = {x + y}"); // 15,59 + 19,17 = 34,76

И добавлять пространство до или после вывода:

Console.WriteLine($"Имя: {person.Name, -10} Возраст: {person.Age, -10}"); // 10 пробелов после
Console.WriteLine($"Имя: {person.Name, 10} Возраст: {person.Age, 10}"); // 10 пробелов до

Как видите, возможностей для форматирования много, а пользоваться ими очень удобно.

Заключение

C# предлагает разные способы для форматирования строк. Для самых простых случаев, когда достаточно просто соединить несколько строк вместе, достаточно использовать конкатенацию.

Если же речь идёт о более глубоком форматировании — например, изменении количества знаков после запятой или перевода в проценты, то потребуется метод String.Format.

Вместо метода String.Format можно использовать интерполированные строки. Их плюс — более удобный и понятный синтаксис.

Видео для закрепления материала:

 

 

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

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

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024