Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие КНЕУ.doc
Скачиваний:
24
Добавлен:
07.03.2016
Размер:
3.9 Mб
Скачать

6.8.4. Форматування рядків

У операторові 4 з лістингу 6.8 неявно застосовується метод Format, який замінює всі входження параметрів у фігурних дужках значеннями відповідних змінних із списку виведення. Після номера параметра можна задати мінімальну ширину поля виведення, а також вказати специфікатор формату, який визначає форму представлення значення, що виводиться.

У загальному вигляді параметр задається таким чином:

{n [,m[:специфікатор_ формату]]}

Тут n -номер параметра. Параметри нумеруються з нуля, нульовий параметр замінюється значенням першої змінної із списку виведення, перший параметр - другою змінною і так далі. Параметр m визначає мінімальну ширину поля, яке відводиться під значення, що виводиться. Якщо числу, що виводиться, достатньо меншої кількості позицій, невживані позиції заповнюються пропусками. Якщо числу потрібно більше позицій, параметр ігнорується. Специфікатор формату визначає формат виведення значення. Наприклад, специфікатор C (Currency) означає, що параметр повинен форматуватися як валюта з урахуванням національних особливостей представлення, а специфікатор X (Hexadecimal) задає шістнадцятирічну форму представлення значення, що виводиться.

У операторі 5 використовуються так звані призначені для користувача шаблони форматування. Якщо придивитися, в них немає нічого складного: після двокрапки задається вид значення, що виводиться, причому на місці кожного символу може бути # або 0. Якщо вказаний знак #, на цьому місці буде виведена цифра числа, якщо вона не дорівнює нулю. Якщо вказаний 0, буде виведена будь-яка цифра, у тому числі і 0. У таблиці 6.5 приведені приклади шаблонів і результатів виведення.

Таблиця 6.5.

Приклади застосування призначених для користувача шаблонів форматування

Число

Шаблон

Вид

1,243

00.00

01,24

1,243

#.##

1,24

0,1

00.00

00,10

0,1

#.##

,1

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

6.8.5. Рядки типу StringBuilder

Можливості, що надаються класом string, широкі, проте вимога незмінності його об'єктів може виявитися незручною. В цьому випадку для роботи з рядками застосовується клас StringBuilder, визначений в просторі імен System.Text і що дозволяє змінювати значення своїх екземплярів.

При створенні екземпляра необхідно використовувати операцію new і конструктор, наприклад:

StringBuilder а=new StringBuilder(); // 1

StringBuilder b=new StringBuilder("qwerty"); // 2

StringBuilder с=new StringBuilder(100); // 3

StringBuilder d=new StringBuilder("qwerty", 100); // 4

StringBuilder e=new StringBuilder("qwerty",1, 3, 100); // 5

У конструкторі класу указуються два види параметрів: рядок, що ініціалізував, або підрядок і об'єм пам'яті, що відводиться під екземпляр (ємність буфера). Один або обидва параметри можуть бути відсутніми, в цьому випадку використовуються їх значення за умовчанням.

Якщо застосовується конструктор без параметрів (оператор 1), створюється порожній рядок розміру, заданого за умовчанням (16 байт). Інші види конструкторів задають об'єм пам'яті, рядку, що виділяється, і/або її початкове значення. Наприклад, в операторі 5 об'єкт ініціалізувався підрядком завдовжки 3 символи, починаючи з першого (підрядок "wer"). Основні елементи класу StringBuilder приведені в таблиці 6.6.

Таблиця 6.6

Основні елементи класу System.Text.StringBuilder

Назва

Вид

Опис

Append

Метод

Додавання в кінець рядка. Різні варіанти методу дозволяють додавати в рядок величини будь-яких вбудованих типів, масиви символів, рядка і підрядка типу string

AppendFormat

Метод

Додавання форматованого рядка в кінець рядка

Capacity

Властивість

Отримання або установка ємності буфера. Якщо встановлюване значення менше поточної довжини рядка або більше максимального, генерується виключення ArgumentOutOfRangeException

Insert

Метод

Вставка підрядка в задану позицію

Length

Властивість

Довжина рядка (кількість символів)

MaxCapacity

Властивість

Максимальний розмір буфера

Remove

Метод

Видалення підрядка із заданої позиції

Replace

Метод

Заміна всіх входжень заданого підрядка або символу новим підрядком або символом

ToString

Метод

Перетворення в рядок типу string

Приклад застосування методів приведений в лістингу 6.12.

Лістинг 6.12. Робота з рядками типу StringBuilder

using System;

using System.Text;

namespace ConsoleApplication1

{

class examp38

{

static void Main()

{

Console.Write("Введіть зарплату: ");

double salary = double.Parse(Console.ReadLine());

StringBuilder a = new StringBuilder();

a.Append("зарплата ");

a.AppendFormat("{0,6:C} - в рік {1,6:C}", salary, salary * 12);

Console.WriteLine(a);

a.Replace("р.","тис.$");

Console.WriteLine("А краще було б: " + a);

}

}

}

Результат роботи програми:

Введіть зарплату: 3500

зарплата 3 500.00р. - в рік 42 000,00р.

А краще було б: зарплата 3 500,00тис.$ - в рік 42 000.00тис.$

Ємність буфера не відповідає кількості символів в рядку і може збільшуватися в процесі роботи програми як в результаті прямих вказівок програміста, так і унаслідок виконання методів зміни рядка, якщо рядок в результаті перевищує поточний розмір буфера. Програміст може зменшити розмір буфера за допомогою властивості Capacity, щоб не позичати зайву пам'ять.