Вправа – дослідження основ форматування рядків
- 20 хвилин
У цій одиниці ви дізнаєтеся, як форматувати рядки для ефективного відображення, особливо для випадків, коли використовуються кілька змінних.
Підготовка середовища кодування
Цей модуль містить практичні дії, які допоможуть вам побудувати та запустити демонстраційний код. Вам рекомендується виконати ці дії, використовуючи код Visual Studio як середовище розробки. Використання коду Visual Studio для цих дій допомагає вам стати більш зручним написанням і виконанням коду в середовищі розробника, що використовується професіоналами по всьому світу.
Примітка
Якщо ви завершили інші модулі Microsoft Learn у цій серії C# , можливо, ви вже створили папку проекту для зразків коду. У такому разі можна пропустити наведений нижче розділ кроків і видалити код у файлі Project.cs, який використовувався для попередньої вправи.
Відкрийте Код Visual Studio. Щоб відкрити код Visual Studio, можна скористатися меню "Пуск" Windows (або еквівалентним ресурсом для іншої ОС).
У меню Код Visual Studio Файл виберіть Відкрити папку.
У діалоговому вікні Відкрити папку перейдіть до папки "Робочий стіл Windows". Якщо у вас є інше розташування папки, де зберігаються проекти коду, натомість можна використовувати це розташування папки. Для цього навчання важливо мати розташування, яке легко знайти і запам'ятати.
У діалоговому вікні Відкрити папку виберіть Вибрати папку. Якщо з'явиться діалогове вікно безпеки з запитанням, чи довіряєте ви авторам, виберіть Так.
У меню коду Visual Studio Code виберіть Новий термінал. Зверніть увагу, що в командному рядку на панелі терміналів відображається шлях до папки для поточної папки. Приклад.
C:\Users\someuser\Desktop>У командному рядку термінала, щоб створити нову консольну програму в указаній папці, введіть нову консоль dotnet -o ./CsharpProjects/TestProject , а потім натисніть клавішу Enter. Ця команда .NET CLI використовує шаблон програми .NET для створення нового проекту програми консолі C# у вказаному розташуванні папки. Ця команда створює папки CsharpProjects і TestProject і використовує TestProject як ім'я файлу
.csproj.На панелі EXPLORER розгорніть папку CsharpProjects. Має відобразитися папка TestProject і два файли, файл програми C# з іменем Program.cs і файл проекту C# з іменем TestProject.csproj.
На панелі EXPLORER, щоб переглянути файл коду на панелі "Редактор", виберіть Program.cs.
Видалення наявних рядків коду. Цей проект консолі C# використовується для створення, створення та запуску зразків коду під час цього модуля.
Закрийте панель терміналів.
Що таке складене форматування?
Складене форматування використовує нумеровані покажчики місця заповнення в рядку. Під час виконання все, що міститься у фігурних дужках, вирішується на значення, яке також передається на основі їх положення.
У цьому прикладі складеного форматування використовується вбудований метод Format() ключового string слова типу даних. Оновіть код у редакторі коду Visual Studio, як показано нижче.
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Якщо ви запустите цей код, ви помітите наведений нижче результат.
Hello World!
Про цей код можна помітити кілька важливих речей.
- Типи даних і змінні певного типу даних мають вбудовані "допоміжні методи", щоб полегшити виконання певних завдань.
- У текстовому рядку
"{0} {1}!"створюється шаблон, частини якого замінюються під час виконання. - Маркер
{0}замінюється першим аргументом після шаблону рядка, іншими словами, значенням змінноїfirst. - Маркер
{1}замінюється другим аргументом після шаблону рядка, іншими словами, значенням змінноїsecond.
Примітка
Ви можете подумати, що дивно починати з числа 0. Насправді це дуже часто в розробці програмного забезпечення. Щоразу, коли є послідовність елементів, які можна визначити за допомогою числа, нумерація зазвичай починається з 0.
Оновіть код, як виконайте наведені нижче дії.
string first = "Hello"; string second = "World"; Console.WriteLine("{1} {0}!", first, second); Console.WriteLine("{0} {0} {0}!", first, second);Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите такий результат:
World Hello! Hello Hello Hello!
Ось кілька спостережень щодо таких прикладів:
- Для першої
Console.WriteLine()інструкції зауважте, що маркери можна впорядкувати в будь-якому порядку. Зразок коду має{1}перед{0}. - Для другої
Console.WriteLine()інструкції зауважте, що маркери можна використовувати повторно з трьома{0}екземплярами . Крім того, другий змінний аргумент ,secondне використовується. Тим не менш, код все ще працює без помилок.
Що таке інтерполяція рядків?
Інтерполяція рядків – це метод, який спрощує складене форматування.
Замість нумерованого маркера, включно з буквальним значенням або іменем змінної в списку аргументів або String.Format()Console.WriteLine(), можна просто використовувати ім'я змінної всередині фігурних фігурних дужк.
Щоб інтерпольувати рядок, потрібно додати його до директиви
$. Тепер створіть ті самі приклади з попередньої версії, використовуючи інтерполяцію рядків замість складеного форматування. Оновіть код, як виконайте наведені нижче дії.string first = "Hello"; string second = "World"; Console.WriteLine($"{first} {second}!"); Console.WriteLine($"{second} {first}!"); Console.WriteLine($"{first} {first} {first}!");Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите такий результат:
Hello World! World Hello! Hello Hello Hello!
Примітка
Якщо ви подивитеся на приклади коду в книгах і в Інтернеті, імовірно, використовуються як складене форматування , так і інтерполяція рядків , але зазвичай потрібно вибрати інтерполяцію рядків.
Грошова одиниця форматування
Складене форматування та інтерполяція рядків можна використовувати для форматування значень для відображення певною мовою та культурою. У наведеному нижче прикладі визначник грошового формату :C використовується для представлення price змінних і discount грошових одиниць. Оновіть код, як виконайте наведені нижче дії.
decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");
Якщо ви виконали цей код на комп'ютері з мовою інтерфейсу Windows, установленою як "Англійська (Сполучені Штати)", ви помітите наведений нижче результат.
Price: $123.45 (Save $50.00)
Зверніть увагу, як додавання :C маркерів у фігурних фігурних дужках форматує число як грошову одиницю незалежно від того, використовуєте int ви чи decimal.
Примітка
Що станеться, якщо ваша країна або регіон і мова не відомі? Якщо ви запустите попередній код у редакторі .NET "in-browser", наприклад TrydotNet , ви побачите такий результат: Price: ¤123.45 (Save ¤50.00). Символ ¤ використовується замість символу грошей країни або регіону. Це загальний символ, який використовується для позначення "грошової одиниці" незалежно від типу грошової одиниці. Цей символ відображається в редакторі .NET, оскільки він ігнорує ваше поточне розташування.
Як країна або регіон користувача та мова впливають на форматування рядків
Що робити, якщо ви виконаєте попередній код на комп'ютері у Франції з французькою мовою інтерфейсу Windows? У такому разі ви побачите наведений нижче результат.
Price: 123,45 € (Save 50,00 €)
Причина попереднього результату "€" полягає в тому, що функція грошового форматування рядка залежить від параметра локального комп'ютера для культури. У цьому контексті термін "культура" посилається на країну або регіон і мову кінцевого користувача. Код культури – це п'ять рядків символів, які комп'ютери використовують для визначення розташування та мови кінцевого користувача. Код культури гарантує, що певні відомості, наприклад дати та грошова одиниця, можуть бути представлені належним чином.
Приклад.
- код культури англійської мови в США є
en-US. - код культури французького оратора у Франції є
fr-FR. - код культури французького доповідача в Канаді є
fr-CA.
Культура впливає на систему письма, календар, який використовується, порядок сортування рядків і форматування дат і чисел (наприклад, грошовий формат).
На жаль, переконатися, що код працює належним чином на всіх комп'ютерах незалежно від країни або регіону або мови кінцевого користувача, складно. Цей процес називається локалізацією (або глобалізацією). Локалізація залежить від багатьох факторів, не обговорюваних у цьому модулі, але просто синтаксис форматування рядків може використовувати інший формат залежно від культури користувача.
Форматування чисел
Працюючи з числовими даними, можна відформатувати число для зручності читання, включивши кому, щоб роз'єдати тисячі, мільйони, мільярди тощо.
Визначник N числового формату робить числа зручнішими для читання. Оновіть код, як виконайте наведені нижче дії.
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");
Якщо ви переглядаєте цю статтю en-US з культури, ви помітите наведений нижче результат.
Measurement: 123,456.79 units
За замовчуванням визначник числового формату N відображає лише дві цифри після десяткової коми.
Якщо потрібно збільшити точність відображення, це можна зробити, додавши число після визначника. Наведений нижче код відображатиме чотири цифри після десяткової коми за допомогою N4 визначника. Оновіть код, як виконайте наведені нижче дії.
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");
Якщо ви переглядаєте цю статтю en-US з культури, ви помітите наведений нижче результат.
Measurement: 123,456.7891 units
Відсоток форматування
Використовуйте визначник формату P для форматування відсотків і округлення до 2 десяткових розрядів. Додайте число після цього, щоб керувати кількістю значень, які відображаються після десяткової коми. Оновіть код, як виконайте наведені нижче дії.
decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");
Якщо ви переглядаєте цю статтю en-US з культури, ви помітите наведений нижче результат.
Tax rate: 36.79%
Поєднання підходів до форматування
Змінні рядків можуть зберігати рядки, створені за допомогою методів форматування. У наведеному нижче прикладі результати десяткових і десяткових математичних символів відформатовано та зберігаються в yourDiscount рядку за допомогою складеного форматування.
Оновіть код у такий спосіб.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
Console.WriteLine(yourDiscount);
Якщо ви переглядаєте цю статтю en-US з культури, ви помітите наведений нижче результат.
You saved $7.56 off the regular $67.55 price.
Можна об'єднати кілька форматованих рядків. Побудувати на попередньому коді, об'єднуючи обчислюваний відсоток, використовуючи інтерполяцію рядка замість об'єднання рядків, вставивши yourDiscount += $"A discount of {(price - salePrice)/price:P2}!"; його в код у рядку перед Console.WriteLine().
Примітка
Вам не потрібно використовувати String.Format() цей підхід інтерполяції рядків.
Оновіть код у такий спосіб.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
yourDiscount += $"A discount of {((price - salePrice)/price):P2}!"; //inserted
Console.WriteLine(yourDiscount);
Якщо ви переглядаєте цю одиницю en-US з культури, ви спостерігаєте за наведеними нижче результатами.
You saved $7.56 off the regular $67.55 price. A discount of 11.19%!
Коротко
Ось найважливіші виноси з цієї одиниці про форматування рядків:
- Для форматування рядків можна використовувати складене форматування або інтерполяцію рядків.
- У складеному форматі використовується шаблон рядка, який містить один або кілька маркерів заміни у формі
{0}. Крім того, ви маєте список аргументів, які відповідають маркерам заміни на основі їхнього замовлення. Складене форматування працює під час використанняstring.Format()абоConsole.WriteLine(). - З інтерполяцією рядків використовується шаблон рядка з іменами змінних, які потрібно замінити в фігурних фігурних дужках. Використовуйте директиву
$перед шаблоном рядка, щоб указати, що рядок потрібно інтерпольувати. - Форматування грошової одиниці
:Cза допомогою визначника. - Форматування чисел за
:Nдопомогою визначника. Керуйте точністю (кількість значень після десяткової коми), використовуючи число після подібного:N{myNumber:N3}. - Форматування відсотків за
:Pдопомогою визначника формату. - Форматування грошової одиниці та чисел залежить від культури користувача– п'ятисимвитного коду, який містить країну або регіон користувача та мову (відповідно до настройок на комп'ютері).