Г. Шилдт - С#4.0 Полное руководство (1160795), страница 162
Текст из файла (страница 162)
Ниже приведены две его формы. риЫЬс аСг1пд ЯиЬаггтпд(спт атагг1пдех) риЫьс аггьпд БиЬатттпд(ьпг агаггтпдех, Ьпг 1епдтщ В первой форме метода ЯиЬзстспд () подстрока извлекается, начиная с места, обозначаемого параметром а Саггтп0ех, и до конца вызывающей строки. А во второй форме данного метода извлекается подстрока, состоящая из количества символов, определяемых параметром 1епдСЛ, начиная с места, обозначаемого параметром а СагС 1пс(ех. В обеих формах возвращается получающаяся в итоге подстрока. В приведенном ниже примере программы демонстрируется применение метода БиЬЭСЬ 1пд () ° 812 Часть П. Библиотека С(! // Использовать метод ЯпЬягг1пЧ 0 пя1пч Яуясеао с1авв ЯоЬясггпдоезо ( ягаг1с тоге Маго() ( ясггпч ясг -- "АВСОЕРЯН1ЗКЫЧХОРОНЯТОУИХХ2'И Сопво1е.Хггсе( Тпе("Строка ясг: " + всг); Сопво1е.нггве("Подстрока всг.Яппясггпд(15): "); ясггпэ яппясг = ясг.зопясг1пэ(15)1 Сопяо1е .ИгггеЬ1пе (вппвсг) 1 Сопво1е.нг1ге("Подстрока ясг.зппвгггпч(0, 15): "); яппясг = ясг.Яппясг1пч(0, 15); Сопяо1е.нггсеь1пе(яппясг); ) ) Эта программа дает следующий результат.
Строка ясг: АВСОЕРНН1ОК1ЛНОРОНЯТОРИХТ2 Подстрока ясг.ЯоЬясггпэ(15): РОНЯТОУИХУ2 Подстрока' ясг.ЯпЬясггпЧ(0, 15): АВСОЕРСН1ЗК1ЛНО Методы расширения класса Вопд Как упоминалось ранее, в классе Бсг1п9 реализуется обобщенный интерфейс ТЕппиегаЬ1е<Т>. Это означает, что, начиная с версии С() 3.0, для объекта класса Ягг1пд можно вызывать методы расширения, определенные в классах ЕпптегаЬ1е и 0пе гуаЬ1е, которые находятся в пространстве имен Бувгем. Ь1пФ Эти методы расширения служат главным образом для поддержки 1!)Х)Я, хотя некоторые из них могут использоваться в иных целях, в том числе и в определенных видах обработки строк. Подробнее о методах расширения см.
в главе 19. Форматирование Когда данные встроенных в С() типов, например 1пс или с(опЬ1е, требуется отобразить в удобочитаемой форме, приходится формировать их строковое представление. Несмотря на то что в Ся для такого представления данных автоматически предоставляется формат, используемый по умолчанию, имеется также возможность указать выбранный формат вручную. Так, в части 1 этой книги было показано, что числовые данные можно выводить в формате выбранной денежной единицы. Для форматирования данных числовых типов в С() предусмотрен целый ряд методов, включая методы Сопво1е. Хг1геО1пе (), Ягг1пд. Гогмас () и ТОБГг1пд () . Во всех этих методах применяется один и тот же подход к форматированию. Поэтому освоив один из них, вы сможете без особого труда применять и другие.
Общее представление о форыатировании Форматирование осуществляется с помощью двух компонентов: слецификаторов формал1а и поставщиков формагла. Конкретная форма строкового представления Глава 22. Строки и форматирование 813 отдельного значения зависит от спецификатора формата. Следовательно, спецификатор формата определяет, в какой именно удобочитаемой форме будут представлены данные. Например, для вывода числового значения в экспоненциальном представлении (т.е. в виде мантиссы и порядка числа) используется спецификатор формата Е. Как правило, конкретный формат значения зависит от культурных и языковых особенностей локализации программного обеспечения.
Например, в Соединенных Штатах Америки денежные суммы указываются в долларах, а в странах ЕС вЂ” в евро. Для учета культурных и языковых отличий в СФ предусмотрены поставщики формата. В частности, поставщик формата определяет порядок интерпретации спецификатора формата. Поставщик формата создается путем реализации интерфейса 1ГоггааГРгоч1г(ег, в котором определяется метод ЕеГРогтас () .
Для всех встроенных числовых типов и многих других типов данных в среде .НЕТ Ргашеи ог)г предопределены соответствующие поставщики формата. Вообще говоря, данные можно отформатировать, не указывая конкретный поставщик формата, поэтому поставщики формата не рассматриваются далее в этой книге. Для того чтобы отформатировать данные, достаточно включить спецификатор формата в метод, полдерживающий форматирование. О применении спецификаторов формата речь уже шла в главе 3, тем не менее к этому вопросу стоит вернуться вновь. Применение спецификаторов формата рассматривается далее на примере метода Сопао1е.
Хгьсебвпе (), хотя аналогичный подход применим и к другим методам, поддерживающим форматирование. Для форматирования выводимых данных служит следующая форма метода Иг1севвпе(). ХгггеЬгпе(афсрматирувхвая строка", агдО, агдг, ... , агдЩ; В этой форме аргументы метода игйгеьг пе () разделяются запятой, а не знаком е. А форматирующая строка состоит из двух следующих элементов: обычных печатаемых символов, отображаемых в исходном виде, а также команд форматирования.
Ниже приведена общая форма команд форматирования: ( агдь аж, ггзг(ГЛ . "Ггас ) где агдаса — это номер отображаемого аргумента, начиная с нуля; наг(ГЛ вЂ” минимальная ширина поля, а Ггвс — спецификатор формата. Параметры илс(сл и гтс не являются обязательными. Поэтому в своей простейшей форме команда форматирования просто указывает конкретные аргументы для отображения. Например, команда ( О ) указывает аргумент ахдО, команда (1 ) — аргумент агд1 и тд.
Если во время выполнения программы в форматирующей строке встречается команда форматирования, то вместо нее подставляется и затем отображается соответствующий аргумент, определяемый параметром агдпигв. Следовательно, от поло- женил спецификатора формата в форматирующей строке зависит, где именно будут отображаться соответствующие данные. А номер аргумента определяет конкретный форматируемый аргумент. Если в команде форматирования указывается параметр Г)вц то данные отображаются в указываемом формате.
В противном случае используется формат, выбираемый по умолчанию. Если же в команде форматирования указывается параметр игс(ГЛ, то выводимые данные дополняются пробелами для достижения минимально необходимой ширины поля. При положительном значении параметра нгс(СЛ выводимые данные выравниваются по правому краю, а при отрицательном значении — по левому краю. Оставшаяся часть данной главы посвящена вопросам форматирования и отдельным спецификаторам формата.
814 Часть и. Библиотека Стт спецификаторы формата числовых данных Таблица 22.4. Спецнфикаторы формата числовых данных Назначение спецификатора точности Спецификатор Формат Задает количество десятичных раз- рядов Денежная единица То же, что и с Целочисленный (используется только с Задает минимальное количество целыми числами) цифр. При необходимости результат дополняется начальными нулями То же, что и и Экспоненциальное представление чи- сел (в обозначении используется про- писная буква Е) Экспоненциальное представление чисел (в обозначении используется строчная буква е) Представление чисел с фиксирован- ной точкой Тоже, что и Р Используется более короткий из двух форматов: Е или Р Используется более короткий из двух форматов: е или Е Представление чисел с фиксирован- ной точкой (и запятой в качестве раз- делителя групп разрядов) То же, что и н Проценты Задает количество десятичных раз- рядов.
По умолчанию используется шесть рязрядов Задает количество десятичных раз- рядов. По умолчанию используется шесть разрядов Задает количество десятичных раз- рядов См. спецификаторы е и Р См, спецификаторы е и й Задает количество десятичных раз- рядов Задает количество десятичных раз- рядов То же, что и Р Числовое значение, которое преобразуется с помощью метода Расее () в эквивалентную внутреннюю форму. (Зто так называемый "круговой" формат) Шестнадцатеричный (в обозначении используются прописные буквы А-Г) Р Р,или т Не используется Задает минимальное количество цифр.
При необходимости результат дополняется начальными нулями Задает минимальное количество цифр. При необходимости результат дополняется начальными нулями Шестнадцатеричный (в обозначении используются строчные буквы А-Г) хтля числовых данных определено несколько спецификаторов формата, сведенных в табл.
22.4. Каждый спецификатор формата может включать в себя дополнтпельный, но необязательный спецификатор точности. Так, если числовое значение требуется указать в формате с фиксированной точкой и двумя десятичными разрядами в дробной части, то для этой цели служит спецификатор Р2. Глава 22. Строки и форматирование 818 Как пояснялось выше, конкретное действие спецификаторов формата зависит от текущих настроек параметров культурной среды. Например, спецификатор денежной единицы С автоматически отображает числовое значение в формате денежной единицы, выбранном для локализации программного обеспечения в конкретной культурной среде.
Для большинства пользователей используемая по умолчанию информация о культурной среде соответствует их региональным стандартам и языковым особенностям. Поэтому один и тот же спецификатор формата может использоваться без учета культурного контекста, в котором выполняется программа. В приведенной ниже программе демонстрируется применение нескольких спецификаторов формата числовых данных. // Продемонстрировать применение различных спепификаторов формата числовых данных. пвьпч Вувсеи( с1авв ЕоппаСОеыо ( агат(с чо(8 ма(п() ( соиЫе ч = 17688.65849; с1опЫе ч2 = 0.15; ьпв х = 21; Сопво1е.иг1гевьпе("(Омт2)", ч); Сопво1е.иг1сеььпе("(О:Х5)", ч); Сопво1е.иг16евьпе("(О:е)", ч); Сопво1е.ит1гепьпе("(О:т)", ч); Сопво1е.иг1сеььпе("(О:р)", ч2)," Сопво1е.игтвепьпе("(О:Х)", х); Сопво1е.нг1Севьпе("(О:012)", х); Сопво1е .Хт1веь1пе ("( 0:С)ГЧ 189 .
99) 1 ) ) Эта программа дает следующий результат. 17688.66 17, 688.65849 1.7688ббе+004 17688.65849 15.00 % 15 000000000021 8189.99 Обратите внимание на действие спецификатора точности в нескольких форматах. Представление о номерах ар(ументов Следует иметь в виду, что аргумент, связанный со спецификатором формата, определяется номером аргумента, а не его позицией в списке аргументов. Это означает, ат б Часть И. Библиотека С() что один и тот же аргумент может указываться неоднократно в одном вызове метода ИгьгеБ1пе () . Эта также означает, что аргументы могут отображаться в той последовательности, в какой они указываются в списке аргументов.