Из этого руководства вы узнаете:
Что такое String.Format?
Как использовать String.Format?
Форматирование валюты
Форматирование даты и времени
Форматирование Decimal, Double, Float и Int
String.Format
предназначен для преобразования значения в соответствии с указанным вами форматом (Format). В этом руководстве вы познакомитесь со всеми методами преобразования каждого типа значения в желаемый формат.
Программа для демонстрации
Для того, чтобы вы поняли, как работает String.Format
, я написал для этой статьи небольшую демонстрационную программу. В ней я беру десятичное значение, и конвертирую его в валюту. Значок валюты будет отображаться в соответствии с настройками вашего региона.
Пример
using System;
namespace StringFormat_Example
{
public class Program
{
public static void Main(string[] args)
{
decimal coin=17.36m;
Console.WriteLine(String.Format("{0:C}",coin));
}
}
}
Вывод
₹ 17.36
Это просто небольшая демонстрационная программа, и в ней пока не виден широкий спектр возможностей форматирования String.Format. В этой статье я попытался охватить все виды форматирования для того, чтобы вы могли изучить всю тему, прочитав всего одну статью.
В этой главе вы изучите:
String.Format – Double, Decimal, Float или Int ↴
STRING.FORMAT ДЛЯ ПРЕОБРАЗОВАНИЯ ВАЛЮТЫ
В большинстве случаев вам нужно отображать в виде валюты значения типа int, double или number. Для осуществления этого нам не нужно писать десятки строк кода. Просто кастомизируйте вывод как вам нужно и позвольте String.Format сделать за вас всю работу.
Формат |
Описание |
{0:C} |
Отображает фактическое значение в валюте. |
{0:C4} |
Отображает фактическое значение с точностью до 4 цифр после запятой. |
{0:C6} |
Отображает фактическое значение с точностью до 6 цифр после запятой. |
Пример
using System;
namespace StringFormat_Currency
{
public class Program
{
public static void Main(string[] args)
{
decimal dcoin=2398.87m;
int icoin=2309;
float fcoin=9283.65f;
Console.WriteLine(String.Format("Convert Decimal {0:C}",dcoin));
Console.WriteLine(String.Format("Convert Decimal {0:C4}",icoin));
Console.WriteLine(String.Format("Convert Decimal {0:C6}",fcoin));
}
}
}
Вывод
Convert Decimal ₹ 2,398.87
Convert Decimal ₹ 2,309.0000
Convert Decimal ₹ 9,283.650000
STRING.FORMAT ДЛЯ ПРЕОБРАЗОВАНИЯ DATETIME
String.Format
широко используется для преобразований даты и времени. Простенькая DateTime-программа не даст вам отформатированного вывода. String.Format
в C# помогает отображать DateTime
в соответствии с вашими потребностями. Для DateTime
можно применить следующие форматы.
Формат |
Описание |
{0:yy} |
Отображает год в виде двух цифр |
{0:yyyy} |
Отображает год в четырехзначном формате |
{0:MM} |
Отображает месяц. Для обозначения месяца используется латинская заглавная буква «М», так как маленькая буква m означает минуты. |
{0:dd} |
Отображает день даты |
{0:dd-MM-yyyy} |
Отображает дату в формате dd-MM-YYYY |
{0:hh:mm:ss} |
Отображает время в формате hh:mm:ss |
{0:zz} |
Отображает текущий часовой пояс |
Всегда помните при форматировании даты:
y - год
M - месяц
d - день
h - час
m - минута
s - секунда
f - миллисекунда
z - часовой пояс
Пример
using System;
namespace StringFormat_DateTime
{
public class Program
{
public static void Main(string[] args)
{
DateTime dt=DateTime.Now;
//Start Formation
Console.WriteLine(String.Format("Original Value :- {0}",dt));
Console.WriteLine(String.Format("Display Year in 2 Digits :- {0:yy}",dt));
Console.WriteLine(String.Format("Display Year in 4 Digits :- {0:yyyy}",dt));
//Use Capital M for month. Small m displays minutes
Console.WriteLine(String.Format("Display Year and Months :- {0:yyyy MM}",dt));
Console.WriteLine(String.Format("Display date, month and Year :- {0:dd MM yyyy}",dt));
Console.WriteLine(String.Format("Display Time :- {0:hh:mm:ss}",dt));
Console.WriteLine(String.Format("My Time Zone is :- {0:zz}",dt));
}
}
}
Вывод
Original Value :- 17/02/17 9:56:00 AM
Display Year in 2 Digits :- 17
Display Year in 4 Digits :- 2017
Display Year and Months :- 2017 02
Display date, month and Year :- 17 02 2017
Display Time :- 09:56:00
My Time Zone is :- +05
_
DATETIMEFORMATINFO
В DateTimeFormatInfo
есть несколько определенных стандартов, которые помогут вам настроить дату и время самым простым способом. Вот список Определенных стандартов (Defined Standard) присущих культуре en-us.
Спецификатор |
Свойство |
Паттерн (для культуры en-us) |
t |
ShortTimePattern |
h:mm tt |
d |
ShortDatePattern |
M/d/yyyy |
T |
LongTimePattern |
h:mm:ss tt |
D |
LongDatePattern |
dddd, MMMM dd, yyyy |
f |
(комбинация D и t) |
dddd, MMMM dd, yyyy h:mm tt |
F |
FullDateTimePattern |
dddd, MMMM dd, yyyy h:mm:ss tt |
g |
(комбинация d и t) |
M/d/yyyy h:mm tt |
G |
(комбинация d и T) |
M/d/yyyy h:mm:ss tt |
m,M |
MonthDayPattern |
MMMM dd |
y, Y |
YearMonthPattern |
MMMM, yyyy |
r, R |
RFC1123Pattern |
ddd, dd MMM yyyy HH':'mm':'ss 'GMT' () |
s |
SortableDateTimePattern |
yyyy'-'MM'-'dd'T'HH':'mm':'ss () |
u |
UniversalSortableDateTimePattern |
yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*) |
Пример
using System;
namespace StringFormat_DateTimeFormatInfo
{
public class Program
{
public static void Main(string[] args)
{
DateTime dt=DateTime.Now;
//Start Formation
Console.WriteLine(String.Format("Short Time Pattern [t] : {0:t}",dt));
Console.WriteLine(String.Format("Short Date Pattern [d] : {0:d}",dt));
Console.WriteLine(String.Format("Long Time Pattern [T] : {0:T}",dt));
Console.WriteLine(String.Format("Long Date Pattern [D] : {0:D}",dt));
Console.WriteLine(String.Format("Combination of D and T [f] : {0:f}",dt));
Console.WriteLine(String.Format("Full Date Time Pattern [F] : {0:F}",dt));
Console.WriteLine(String.Format("Combination of d and t [g] : {0:g}",dt));
Console.WriteLine(String.Format("Combination of d and T [G] : {0:G}",dt));
Console.WriteLine(String.Format("Month Day Pattern [m or M] : {0:M}",dt));
Console.WriteLine(String.Format("Year Month Pattern [y or Y] : {0:Y}",dt));
Console.WriteLine(String.Format("RFC1123Pattern [r or R] : {0:R}",dt));
Console.WriteLine(String.Format("SortableDateTimePattern [s] : {0:s}",dt));
Console.WriteLine(String.Format("UniversalSortableDateTimePattern [u] : {0:u}",dt));
}
}
}
Вывод
Short Time Pattern [t] : 9:53 AM
Short Date Pattern [d] : 17/02/17
Long Time Pattern [T] : 9:53:09 AM
Long Date Pattern [D] : Friday 17 February 2017
Combination of D and T [f] : Friday 17 February 2017 9:53 AM
Full Date Time Pattern [F] : Friday 17 February 2017 9:53:09 AM
Combination of d and t [g] : 17/02/17 9:53 AM
Combination of d and T [G] : 17/02/17 9:53:09 AM
Month Day Pattern [m or M] : 17 February
Year Month Pattern [y or Y] : February 2017
RFC1123Pattern [r or R] : Fri, 17 Feb 2017 09:53:09 GMT
SortableDateTimePattern [s] : 2017-02-17T09:53:09
UniversalSortableDateTimePattern [u] : 2017-02-17 09:53:09Z
_
STRING.FORMAT ДЛЯ DOUBLE, DECIMAL, FLOAT ИЛИ INT
Иногда нам нужно кастомизировать вывод для значений типа Double, Decimal или Float. Иногда вывод для этих типов данных слишком длинный (мы говорим о дробной части), и вам просто нужно обрезать часть значения, оставшуюся за пределами определенной точности. String.Format
поможет вам настроить значения типа Double, Decimal или Float.
Таблица Форматов
Формат |
Объяснение |
Значение |
Вывод |
{0} |
Исходное значение |
83745.892 |
83745.892 |
{0:0.00} |
Два десятичных знака после точки |
83745.892 |
83745.89 |
{0:0.##} |
Максимум два десятичных знака после точки |
83745.892 |
83745.89 |
{0:00.00} |
Две цифры перед десятичной точкой |
5.892 |
05.892 |
{0:0,0.00} |
Разделитель тысяч |
83745.892 |
83,745.89 |
{0:0.0} |
Преобразование дробных чисел к виду с нулем |
0.5 |
0.5 |
{0:#.0} |
Преобразование дробных чисел к виду без нуля |
0.5 |
.5 |
{0,10:0.0} |
Выравнивание числа по пробелам |
120.5 |
“ 120.5” |
{0,10:0.0} |
Выравнивание числа по пробелам |
120.5 |
“120.5 Hello” |
{0:###-##-####} |
Формат номера телефона |
123456789 |
123-45-6789 |
Пример
using System;
namespace StringFormat_Double
{
public class Program
{
public static void Main(string[] args)
{
//Start Formation
Console.WriteLine("Current Output : {0}", 83745.892);
Console.WriteLine(string.Format("Two decimal places : {0:0.00}",83745.892));
Console.WriteLine(string.Format("Three decimal places : {0:0.000}",83745.82));
Console.WriteLine(string.Format("Maximum Two decimal places : {0:0.##}",83745.892));
Console.WriteLine(string.Format("Two digits before decimal point : {0:00.00}",5.892));
Console.WriteLine(string.Format("Thousands Separator : {0:0,0.00}",83745.892));
Console.WriteLine(string.Format("Point number conversion with zero : {0:0.0}",0.5));
Console.WriteLine(string.Format("Point number conversion without zero : {0:#.0}",0.5));
Console.WriteLine(string.Format("Align Number with Spaces : {0,10:0.0}",120.5));
Console.WriteLine(string.Format("Align Number with Spaces : {0,-10:0.0} Hello",120.5));
Console.WriteLine(string.Format("Phone Number format {0:###-##-####}",123456789));
}
}
}
Вывод
Current Output : 83745.892
Two decimal places : 83745.89
Three decimal places : 83745.820
Maximum Two decimal places : 83745.89
Two digits before decimal point : 05.89
Thousands Separator : 83,745.89
Point number conversion with zero : 0.5
Point number conversion without zero : .5
Align Number with Spaces : 120.5
Align Number with Spaces : 120.5 Hello
Phone Number format 123-45-6789
_
Заключение
В этом руководстве я попытался максимально раскрыть String.Format
с помощью соответствующих примеров программирования. Для каждого программиста очень важно знать, как использовать String.Format
. Это делает пользовательский опыт более реалистичным и ценным.
Материал подготовлен в рамках специализации «C# Developer».
Всех желающих приглашаем на demo-занятие «Коллекции и структуры данных». На вебинаре мы рассмотрим основные универсальные коллекции .NET (Array, List, Dictionary, Queue, Stack, Hashtable и другие более специфичные), обсудим их назначение, реализацию, методы, производительность, а также как делать выбор в пользу той или иной структуры. >> РЕГИСТРАЦИЯ