Вправа – виявлення заповнення та вирівнювання
- 12 хвилин
Метод string.Format() використовується для виконання складеного форматування, наприклад у прикладі:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Можливо, було б дещо дивно, що ключове слово, яке представляє тип даних, має методи, які можна викликати так само, як і методи Console для класу. Справа в тому, що існує багато схожих методів для string типу даних і будь-якого буквального рядка або змінної типу рядка.
Нижче наведено короткий список категорій цих вбудованих методів, які дають змогу отримати уявлення про можливі можливості.
- Способи додавання пробілів для форматування (
PadLeft(),PadRight()) - Методи, які порівнюють два рядки або полегшують порівняння (
Trim(), ,TrimStart()TrimEnd(),GetHashcode(), властивістьLength) - Методи, які допомагають визначити вміст рядка або навіть отримати лише частину рядка (
Contains(), ,StartsWith(),EndsWith()Substring()) - Методи, які змінюють вміст рядка, замінюючи, вставляючи або видаляючи частини (
Replace(), ,Insert()Remove()) - Методи, які перетворюють рядок на масив рядків або символів (
Split(),ToCharArray())
Форматування рядків за допомогою додавання пробілів до або після
Метод додає пробіли ліворуч від рядка, щоб загальна PadLeft() кількість символів дорівнюватиме аргументу, який ви надсилаєте. У цьому випадку потрібно, щоб загальна довжина рядка сяяла 12 символів.
Видаліть або скористайтеся оператором примітки рядка
//, щоб прокоментувати весь код із попередніх вправ.Оновіть код у редакторі коду Visual Studio, як показано нижче.
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));У меню Файл код Visual Studio Code виберіть Зберегти. Збережіть файл Program.cs перед створенням або запуском коду.
На панелі EXPLORER, щоб відкрити термінал у розташуванні папки TestProject, клацніть правою кнопкою миші TestProject , а потім виберіть Відкрити в інтегрованому терміналі. Панель терміналів має відкритися та містити командний рядок, який показує, що термінал відкрито в папці TestProject.
У командному рядку термінала, щоб запустити код, введіть dotnet виконати і натисніть клавішу Enter.
Примітка
Якщо відображається повідомлення "Не вдалося знайти проект для запуску", переконайтеся, що в командному рядку термінала відображається очікуване розташування папки TestProject. Наприклад:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Коли ви запускаєте код, ви помітите, що чотири символи, префіксовані ліворуч від рядка, мають довжину до 12 символів.
Pad thisЩоб додати пробіл або символи в правій частині рядка, скористайтеся цим методом
PadRight(). 1. Оновіть код у редакторі коду Visual Studio, як показано нижче.Console.WriteLine(input.PadRight(12));Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Символи, додані до кінця рядка, не відображатимуть, але вони там.
Що таке перевантажений метод?
У C# перевантажений метод – це інша версія методу з різними або додатковими аргументами, які дещо змінюють функціональність методу, як у випадку з перевантаженою версією методу PadLeft() .
Ви також можете назвати другу перевантажену версію методу та передати будь-який символ, який потрібно використовувати замість пробілу. У цьому випадку ви заповните додатковий простір символом тире.
Видаліть або скористайтеся оператором
//примітки рядка, щоб прокоментувати весь код із попереднього кроку.Оновіть код у редакторі коду Visual Studio, як показано нижче.
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите чотири штрихи, які префіксують ліву частину рядка довжиною 12 символів.
----Pad this Pad this----
Тепер застосуйте ці нововідкриті знання до іншого реального сценарію світу.
Робота з м'якими рядками
Припустімо, ви працюєте в компанії з обробки платежів, яка досі підтримує застарілі системи мейнфреймів. Часто ці системи вимагають введення даних у певні стовпці. Наприклад, зберігайте ідентифікатор платежу в стовпцях від 1 до 6, ім'я одержувача в стовпцях від 7 до 30 і Сума платежу в стовпцях від 31 до 40. Крім того, важливо, що сума платежу вирівнюється за правим краєм.
Вам буде запропоновано створити програму, яка перетворить дані в реляційній системі керування базами даних на застарілий формат файлу. Щоб переконатися, що інтеграція працює належним чином, перший крок полягає в тому, щоб підтвердити формат файлу, надавши застарілим системним супроводжувачам зразок виводу. Пізніше ви створюєте цю роботу, щоб надсилати сотні або тисячі платежів, які потрібно обробити за допомогою текстового файлу ASCII.
Додавання ідентифікатора платежу до виводу
Щоб почати, роздрукуйте ідентифікатор платежу в перших шести стовпцях. Ви вибираєте деякі випадкові платіжні дані, які мають відповідати цілям.
Видаліть або скористайтеся оператором
//примітки рядка, щоб прокоментувати весь код із попереднього кроку.Оновіть код у редакторі коду Visual Studio, як показано нижче.
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);Повторно використайте змінну
formattedLineдля побудови рядка виводу.Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите такий результат:
769C
Є два пустих пробіли праворуч, які не відображаються. Ви підтвердите, що вони існують на наступному кроці.
Додавання імені одержувача до результатів
Потім додайте вигадане ім'я отримувача, заповнюючи його належним чином.
Оновіть код у редакторі коду Visual Studio, як показано нижче.
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); Console.WriteLine(formattedLine);Оператор
+=виконує об'єднання рядків, беручи попереднє значення змінноїformattedLineта додаючи до неї нове значення. Це скорочений еквівалент наведеного нижче прикладу коду:formattedLine = formattedLine + payeeName.PadRight(24);Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите такий результат:
769C Mr. Stephen Ortega
Знову ж таки, є досить багато пробілів після імені одержувача. Крім того, після ідентифікатора оплати з кроку 1 є два пробіли.
Додавання суми платежу до вихідних даних
Потім додайте вигадану суму платежу та обов'язково вирівняйте PadLeft() результат за правим краєм.
Оновіть код у редакторі коду Visual Studio, як показано нижче.
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine(formattedLine);Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите такий результат:
769C Mr. Stephen Ortega $5,000.00
Цей вихід досить близький до того, що ви розуміли, що шукали застарілі системні супровідники.
Додавання рядка чисел над результатом, щоб легше підтвердити результат
Оскільки важко підрахувати точні стовпці, у яких відображається кожен елемент даних, ви додаєте рядок безпосередньо над результатом, який дає змогу підрахувати кількість стовпців.
Console.WriteLine("1234567890123456789012345678901234567890");
Оновіть код у редакторі коду Visual Studio, як показано нижче.
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine("1234567890123456789012345678901234567890"); Console.WriteLine(formattedLine);Збережіть кодовий файл, а потім за допомогою коду Visual Studio запустіть код. Ви побачите наведений нижче результат, який можна надіслати супроводжувачам застарілої системи, щоб переконатися, що нова інтеграція працює належним чином:
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
Успіх!
Повторити введення
Є кілька важливих виносів з цієї одиниці.
- Кожен
stringтип даних, буквальні рядки та змінні типу впроваджують багато допоміжних методів для форматування, змінення та виконання інших операцій у рядках. -
PadLeft()ІPadRight()методи додають пробіл (або, за потреби, інший символ) до загальної довжини рядка. - Використовується
PadLeft()для вирівнювання рядка за правим краєм. - Деякі методи перевантажені, тобто вони мають кілька версій методу з різними аргументами, які впливають на їх функціональність.
- Оператор
+=об'єднує новий рядок праворуч від наявного рядка ліворуч.