Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Метод Format






Метод Format у наших прикладах зустрічався багаторазово. Щораз, коли виконувався вивід результатів на консоль, неявно викликався й метод Format. Розглянемо оператор печатки:

Console.WriteLine(" s1={0}, s2={1}", s1, s2);

Тут рядок, що задає перший аргумент методу, крім звичайних символів, містить формати, укладені у фігурні дужки. У даному прикладі використовується найпростіший вид формату - він визначає об'єкт, що повинен бути підставлений у ділянку рядка, зайнята даним форматом. Крім неявних викликів, нерідко виникає необхідність явного форматування рядка.

Давайте розглянемо загальний синтаксис як самого методу Format, так і використовуваних у ньому форматів. Метод Format, як і більшість методів, є перевантаженим і може викликатися з різним числом параметрів. Перший необов'язковий параметр методу задає провайдера, що визначає національні особливості, які використовуються в процесі форматування. Як такий параметр повинен бути заданий об'єкт, що реалізує інтерфейс System.IFormatProvider. Якщо цей параметр не заданий, то використається культура, задана за замовчуванням. От приклади двох реалізацій цього методу:

public static string Format(string, object); public static string Format(IFormatProvider, string, params object[]);

Параметр типу string задає форматизацію рядка. Заданий рядок містить один або кілька форматів, вони розпізнаються за рахунок навколишнхй формат фігурних дужок. Число форматів, вставлених у рядок, визначає й число об'єктів, переданих при виклику методу Format. Кожен формат визначає форматування об'єкта, на який він посилається і який, після перетворення його в рядок, буде підставлений у результуючий рядок замість формату. Метод Format як результат повертає переданий йому рядок, де всі специфікації формату замінені рядками, отриманими в результаті форматування об'єктів.

Загальний синтаксис, специфікований формат, такий:

{N [, M [: < коди_форматування> ]]}

Обов'язковий параметр N задає індекс об'єкта, що заміняє формат. Можна вважати, що методу завжди передається масив об'єктів, навіть якщо фактично переданий один об'єкт. Індексація об'єктів починається з нуля, як це прийнято в масивах. Другий параметр M, якщо він заданий, визначає мінімальну ширину поля, що приділяється рядку, що вставляє замість формату. Третій необов'язковий параметр задає коди форматування, що вказують, як варто форматувати об'єкт. Наприклад, код C (Currency) говорить про те, що параметр повинен форматуватися як валюта з урахуванням національних особливостей подання. Код P (Percent) задає форматування у вигляді відсотків з точністю до сотої частки.

Усе стає ясним, коли з'являються відповідні приклади. От вони:

public void TestFormat(){ //метод Format int x=77; string s= string.Format(" x={0}", x); Console.WriteLine(s + " \tx={0}", x); s= string.Format(" Разом: {0, 10} рублів", x); Console.WriteLine(s); s= string.Format(" Разом: {0, 6: ######} рублів", x); Console.WriteLine(s); s= string.Format(" Разом: {0: P} ", 0.77); Console.WriteLine(s); s= string.Format(" Разом: {0, 4: C} ", 77.77); Console.WriteLine(s); //Національні особливості System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(" en-US"); s= string.Format(ci, " Разом: {0, 4: C} ", 77.77); Console.WriteLine(s); }//TestFormat

Приведем деякі коментарі до цієї процедури. Спочатку демонструється, що і явний, і неявний виклики методу Format дають той самий результат. У подальших прикладах показане використання різних специфікацій формату з різним числом параметрів і різних кодів форматування. Зокрема, показаний вивід відсотків і валют. В останньому прикладі з валютами демонструється завдання провайдером національних особливостей. Із цією метою створюється об'єкт класу CultureInfo, ініціалізірованний так, щоб він задавав особливості форматування, прийняті в США. Помітьте, клас CultureInfo успадковує інтерфейс IFormatProvider. Російські національні особливості форматування встановлені за замовчуванням. При необхідності їх можна встановити в такий же спосіб, як це зроблено для США, задавши відповідно константу " ru-RU". Результати роботи методу показані на мал. 5.

Рис. 15.5. Результати роботи методу Format


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал