Чтение онлайн

ЖАНРЫ

Полное руководство. С# 4.0
Шрифт:

С помощью этих форм можно избежать неоднозначности в исходном коде по от ношению к правилам смены регистра. Именно для таких целей эти формы и рекомен дуется применять.

Кроме того, имеются следующие методы ToUpperInvariant и ToLowerInvariant. public string ToUpperlnvariant public string ToLowerlnvariant

Эти методы аналогичны методам ToUpper и ToLower, за исключением того, что они изменяют регистр букв в вызывающей строке безотносительно к настройкам культурной среды. Применение метода Substring

Для получения части строки служит метод Substring. Ниже приведены две его формы. public string Substring(int startIndex) public string Substring(int startIndex, int length)

В первой форме метода Substring подстрока извлекается, начиная с места, обозначаемого

параметром startIndex, и до конца вызывающей строки. А во вто рой форме данного метода извлекается подстрока, состоящая из количества симво лов, определяемых параметром length, начиная с места, обозначаемого параметром startIndex. В обеих формах возвращается получающаяся в итоге подстрока.

В приведенном ниже примере программы демонстрируется применение метода Substring. // Использовать метод Substring. using System; class SubstringDemo { static void Main { string str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; Console.WriteLine("Строка str: " + str); Console.Write("Подстрока str.Substring(15): "); string substr = str.Substring(15); Console.WriteLine(substr); Console.Write("Подстрока str.Substring(0, 15): "); substr = str.Substring(0, 15); Console.WriteLine(substr); } }

Эта программа дает следующий результат. Строка str: ABCDEFGHIJKLMNOPQRSTUVWXYZ Подстрока str.Substring(15): PQRSTUVWXYZ Подстрока str.Substring(0, 15): ABCDEFGHIJKLMNO Методы расширения класса String

Как упоминалось ранее, в классе String реализуется обобщенный интерфейс IEnumerable<T>. Это означает, что, начиная с версии C# 3.0, для объекта класса String можно вызывать методы расширения, определенные в классах Enumerable и Queryable, которые находятся в пространстве имен System.Linq. Эти методы рас ширения служат главным образом для поддержки LINQ, хотя некоторые из них могут использоваться в иных целях, в том числе и в определенных видах обработки строк. Подробнее о методах расширения см. в главе 19. Форматирование

Когда данные встроенных в C# типов, например int или double, требуется ото бразить в удобочитаемой форме, приходится формировать их строковое представле ние. Несмотря на то что в C# для такого представления данных автоматически предо ставляется формат, используемый по умолчанию, имеется также возможность указать выбранный формат вручную. Так, в части I этой книги было показано, что числовые данные можно выводить в формате выбранной денежной единицы. Для форматиро вания данных числовых типов в C# предусмотрен целый ряд методов, включая методы Console.WriteLine, String.Format и ToString. Во всех этих методах при меняется один и тот же подход к форматированию. Поэтому освоив один из них, вы сможете без особого труда применять и другие. Общее представление о форматировании

Форматирование осуществляется с помощью двух компонентов: спецификато ров формата и поставщиков формата. Конкретная форма строкового представления отдельного значения зависит от спецификатора формата. Следовательно, специфика тор формата определяет, в какой именно удобочитаемой форме будут представлены данные. Например, для вывода числового значения в экспоненциальном представле нии (т.е. в виде мантиссы и порядка числа) используется спецификатор формата Е.

Как правило, конкретный формат значения зависит от культурных и языковых особенностей локализации программного обеспечения. Например, в Соединенных Штатах Америки денежные суммы указываются в долларах, а в странах ЕС — в евро. Для учета культурных и языковых отличий в C# предусмотрены поставщики фор мата. В частности, поставщик формата определяет порядок интерпретации специ фикатора формата. Поставщик формата создается путем реализации интерфейса IFormatProvider, в котором определяется метод GetFormat. Для всех встроенных числовых типов и многих других типов данных в среде .NET Framework предопределе ны соответствующие поставщики формата. Вообще говоря, данные можно отформа тировать, не указывая конкретный поставщик формата, поэтому поставщики формата не рассматриваются далее в этой книге.

Для того чтобы отформатировать данные, достаточно включить спецификатор формата в метод, поддерживающий форматирование. О применении спецификато ров формата речь

уже шла в главе 3, тем не менее к этому вопросу стоит вернуться вновь. Применение спецификаторов формата рассматривается далее на примере ме тода Console.WriteLine, хотя аналогичный подход применим и к другим мето дам, поддерживающим форматирование.

Для форматирования выводимых данных служит следующая форма метода WriteLine. WriteLine("форматирующая строка", arg0, arg1, ... , argN);

В этой форме аргументы метода WriteLine разделяются запятой, а не знаком +. А форматирующая строка состоит из двух следующих элементов: обычных печатае мых символов, отображаемых в исходном виде, а также команд форматирования.

Ниже приведена общая форма команд форматирования: {argnum, width: fmt}

где argnum — это номер отображаемого аргумента, начиная с нуля; width — мини мальная ширина поля, a fmt — спецификатор формата. Параметры width и fmt не являются обязательными. Поэтому в своей простейшей форме команда форматиро вания просто указывает конкретные аргументы для отображения. Например, команда {0} указывает аргумент arg0, команда {1} — аргумент arg1 и т.д.

Если во время выполнения программы в форматирующей строке встречается команда форматирования, то вместо нее подставляется и затем отображается соот ветствующий аргумент, определяемый параметром argnum. Следовательно, от поло жения спецификатора формата в форматирующей строке зависит, где именно будут отображаться соответствующие данные. А номер аргумента определяет конкретный форматируемый аргумент.

Если в команде форматирования указывается параметр fmt, то данные отображают ся в указываемом формате. В противном случае используется формат, выбираемый по умолчанию. Если же в команде форматирования указывается параметр width, то вы водимые данные дополняются пробелами для достижения минимально необходимой ширины поля. При положительном значении параметра width выводимые данные вы равниваются по правому краю, а при отрицательном значении — по левому краю.

Оставшаяся часть данной главы посвящена вопросам форматирования и отдель ным спецификаторам формата. Спецификаторы формата числовых данных

Для числовых данных определено несколько спецификаторов формата, сведенных в табл. 22.4. Каждый спецификатор формата может включать в себя дополнительный, но необязательный спецификатор точности. Так, если числовое значение требуется указать в формате с фиксированной точкой и двумя десятичными разрядами в дроб ной части, то для этой цели служит спецификатор F2.

Таблица 22.4. Спецификаторы формата числовых данных Спецификатор Формат Назначение спецификатора точности С Денежная единица Задает количество десятичных разрядов с То же, что и С D Целочисленный (используется только с целыми числами) Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями d То же, что и D Е Экспоненциальное представление чисел (в обозначении используется прописная буква Е) Задает количество десятичных разрядов. По умолчанию используется шесть разрядов е Экспоненциальное представление чисел (в обозначении используется строчная буква е) Задает количество десятичных разрядов. По умолчанию используется шесть разрядов F Представление чисел с фиксированной точкой Задает количество десятичных разрядов f То же, что и F G Используется более короткий из двух форматов: Е или F См. спецификаторы Е и F g Используется более короткий из двух форматов: е или f См. спецификаторы е и f N Представление чисел с фиксированной точкой (и запятой в качестве разделителя групп разрядов) Задает количество десятичных разрядов n То же, что и N Р Проценты Задает количество десятичных разрядов Р То же, что и Р R или r Числовое значение, которое преобразуется с помощью метода Parse в эквивалентную внутреннюю форму. (Это так называемый "круговой" формат) Не используется X Шестнадцатеричный (в обозначении используются прописные буквы A-F) Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями X Шестнадцатеричный (в обозначении используются строчные буквы A-F) Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями

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