Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 151
Текст из файла (страница 151)
Строку можно заполнить символами слева или справа. Для заполнения строки слева служат такие формы метода Рас(Ьекг (): рнвзгс всг1пд Рас(ьеке(1пк 1еп) рнЬ11с вкггпд Раоьетс(гпк 1еп, спас сп) В первой форме метода РаЖеГС () вводятся пробелы с левой стороны вызывающей строки, чтобы ее общая длина стала равной значению параметра 1еп. А во второй форме данного метода вводятся указанные символы СЛ с левой стороны вызывающей строки, Глава 22. Строки и форматирование 765 чтобы ее общая длина стала равной значению параметра 1еп. В обеих формах возвращается получившаяся в итоге строка.
Если значение параметра 1еп меньше длины вызывающей строки, то возвращается копия неизмененной вызывающей строки. Для заполнения строки справа служат следующие формы метода Рак(Н1оЛС (): рнб11с ясг1пд Рабн10ПГ(1пс 1еп) рпо11с ясг1пд Раба10ПГ(дпс 1еп, сваг сЛ) В первой форме метода рас(Хе1С () вводятся пробелы с правой стороны вызывающей строки, чтобы ее общая длина стала равной значению параметра 1еп. А во второй форме данного метода вводятся указанные символы СЛ с правой стороны вызывающей строки, чтобы ее общая длина стала равной значению параметра 1еп. В обеих формах возвращается получившаяся в итоге строка. Если значение параметра 1еп меньше длины вызывающей строки, то возвращается копия неизмененной вызывающей строки. В приведенном ниже примере программы демонстрируются обрезка и заполнение строк.
// Пример обрезки и заполнения строк. оягпч Яуясепц с1аяя тг1ирабоеио ( ясас1с тоги Магп() ( ясг1пч всг = "тест"; сопяо1е.игггех1пе("исходная строка: " + ягг) // Заполнить строку пробелами слева. вгг = ягг.рабхегг(10)) Сопяо1е.Иг).сеьтпе("(" + ясг + ")")) // Заполнить строку пробелами справа. ясг = ясг.рабвгдпс(20)т Сопяо1е.Иг1се(,).пе("(" + ясг + "(")т // Обрезать пробелы. ягг = ягг.тг1и () и Сопяо1е.иг1геьгпе("(" Я ясг + ") "); // Заполнить строку символами В слева. ясг = ясг.Рабьеег(10, 'В')) СОПЗО1Е.ИГГЕЕ)1ПЕ(") я + яСГ т ") ") и // Заполнить строку символами В справа.
ясг = ясг.Рабв10ПС(20, 'В')т Сопяо1е.нг1сеХ1пе("(" + ясг + ")")т // Обрезать символы В, ягг = ягг.тгмл('В')т Сопяо1е.иг1сеХ1пе(")" + всг + ")")т ) Эта программа дает следующий результат: 766 Часть (!. Библиотека С№ Исходная строка: тест тест! тест ! (тест! ! НФННтест ! ! НННтестННН№НФ ! (тест! Вставка, удаление и замена строк Для вставки одной строки в другую служит приведенный ниже метод 1пзегг () .
риЫас зггтпд 1пзегс(1пс зсагг, вггкпд ясг) где я сг обозначает строку, вставляемую в вызывающую строку по индексу я сага. Метод возвращает получившуюся в итоге строку. Для удаления части строки служит метод Регаоуе () . Ниже приведены две его формы. риЫ1с зШпд аеыоие Сапк згагс) риЫ1с вггапд аеяоте (хпк згагс, хпг соипг) В первой форме метода иеыоуе () удаление выполняется, начиная с места, указываемого по индексу ясагс, и продолжается до конца строки. А во второй форме данного метода из строки удаляется количество символов, определяемое параметром осипа, начиная с места, указываемого по индексу я сагс.
В обеих формах возвращается получившаяся в итоге строка. Для замены части строки служит метод иер1асе () . Ниже приведены две его формы. риЫхс вггтпд аер1асе(спас сЫ, спас сЛ2) риЫ1с ясгтпд аер1асе(вггхпд згг1, зсг1пд ягг2) В первой форме метода Кер1асе () все вхождения символа сЛ1 в вызывающей строке заменяются символом СЛ2. А во второй форме данного метода все вхождения строки ягг1 в вызывающей строке заменяются строкой ягг2.
В обеих формах возвращается получившаяся в итоге строка. В приведенном ниже примере демонстрируется применение методов 1пяегс (), Иеыоуе() икер1асе(). // Пример вставки, замены и удаления строк. ивгпд Зувгепц с1авв 1пваераеивеыо ( зсасгс иотп Иа1п() ( згггпд зсг = "Это тест"; сопяо1е.хпсеьтпе("исходная строка: " т ясг)т О Вставить строку. вгг = вгг.1пвегг(4, "простой ")т сопво1е.игггеьхпе(вгг)т // Заменить строку.
вкг = зсг.аер1асе("простой", "непростой ")к Сопво1е.нгтсеЬтпе(зсг)т // Заменить символы в строке згг = всг.аер1асе('т', 'Х'); Глава 22. Строки и форматирование 767 Содэо1е. Игакеваде (эсг) // Удалить строку. эгг = эгг.кеяоче(4, 5); Сопэо1е.иг1севаде(эсг); ) ) Ниже приведен результат выполнения этой программы. Исходная строка: Это тест Это простой тест Это непростой тест ЭХо непросХой ХесХ эхо схой хесх Смена регистра В классе Яггапд предоставляются два удобных метода, позволяющих Сменить регистр букв в строке, — Тоцррег () и Тоьонег () . Ниже приведены их простейшие формы.
риЬ11с эсгадд ТЬЬонег() риьаас экгапд Тоцррег() Метод тоЬонег() делает строчными все буквы в вызывающей строке, а метод Тодррег () делает их прописными. В обоих случаях возвращается получившаяся в итоге строка. Имеются также формы этих методов, в которых можно указывать информацию культурного характера. Кроме того, имеются следующие методы Тоцррег1пчагаадг() и ТоЬонегТдчагаапг(). риЬ11с эсг1пд Тоцррег1пчагаадс() рив11с хсг1дд Тоьонегтгчагаанс() Зги методы аналогичны методам Тоцррег () и ТоЬонег (), за исключением того, что они изменяют регистр букв в вызывающей строке безотносительно к информации культурного характера. Применение метода 812Ьз~тхт1д () Для получения части строки служит метод ЯиЬзгг1пд () . Ниже приведены две его формы.
риваас эсг1дд яиЬэкг1дд(1пс кк(х) риваас эсггдд ЯиЬэсг(дд(адс 1к(х, Тдс саин() В первой форме метода ЯиЬэггапд() подстрока извлекается, начиная с места, обозначаемого параметром дс(х, и до конца вызывающей строки. А во второй форме данного метода извлекается подстрока, состоящая из количества символов, определяемых параметром соип г, начиная с места, обозначаемого параметром Тс)х. В обеих формах возвращается получившаяся в итоге подстрока.
В приведенном ниже примере программыкдемонстрируется применение метода ЯиЬэсгапд(). // Испольэовать метод ЯиЬэсгаод() иэапд Яуэгеап 768 Часть((. Библиотека С№ с1авв Бпьвтг1пдвепо ( вгагтс чо1с мвтп() ( втггпд втг = "АВСОЕРБНХЗКЬИИОРЦНБТ0ЧИХУ2"~ Сопво1е.нггсеьдпе("втг. "" + втт); Сопво1е.нг1те("втг.заьвттьпя(15): "); втт1пч впЬвтт = втг ° Бпьвтт1пч(15); Сопво1е.нг1теъьпе(впЬвтг); Сопво1е.
Иг1те (" втг. Бпьвтт1пя (О, 15): "); впЬвтг = втт.зпьвттгпд(0, 15); Сопво1е.нг1теьлпе(виЬвтг)) ) ) Эта программа дает следующий результат: втт: АВСПЕРБН1ЗКЬИНОРСЛБтпункт2 втг.зппвтггпя ЫБ): Р()лзтпЧИХтз втг.зппвтггпо(0, 15): ЛВСПЕРБН1ЗКЬИНО Методы расширения класса а~гхвд Как упоминалось ранее, в классе Блг1пореализуется интерфейс 1Епппегаь1е<Т>. Это означает, что, начиная с версии С№ 3.0, для объекта класса Блг1пд можно вызывать методы расширения, определенные в классах Епшлегаьуе и Япегуаь1е, которые находятся в пространстве имен Бувсев.
11пц. Эти методы расширения служат главным образом для поддержки 1.1)ЧЯ, хотя некоторые из них могут использоваться в иных целях, в том числе и в определенных видах обработки строк. Подробнее о методах расширения см. в главе 19. форматирование Когда данные встроенных в С№ типов, например 1пг или аспь1е, требуется отобразить в удобочитаемой форме, приходится формировать их строковое представление. Несмотря на то что в С№ для такого представления данных автоматически предоставляется формат, используемый по умолчанию, имеется также возможность указать выбранный формат вручную.
Так, в части !этой книги было показано, что числовые данные можно выводить в формате выбранной денежной единицы. Для форматирования данных числовых типов в С№ предусмотрен цельш ряд методов, включая методы сон во1е. иг1геейпе (), Бгг1пд. Гогиаг () и тозст109 ( ) . Во всех этих методах применяется один и тот же подход к форматированию. Поэтому освоив один из них, вы сможете без особого труда применять и другие. Общее представление о форматировании Форматирование осуществляется с помощью двух компонентов: спецификаторов формата и поставщиков формата.
Конкретная форма строкового представления отдельного значения зависит от спецификатора формата. Следовательно, спецификатор формата определяет, в какой именно удобочитаемой форме будут представлены данные. Например, для вывода числового значения в экспоненциальном представлении (т.е. в виде мантиссы и порядка числа) используется спецификатор формата Е. Глава 22. Строки и форматирование 769 Как правило, конкретный формат значения зависит от культурных и языковых особенностей локализации программного обеспечения.
Например, в Соединенных Штатах Америки денежные суммы указываются в долларах, а в странах ЕС вЂ” в евро. Для учета культурных и языковых отличий в С(( предусмотрены поставщики формата. В частности, поставщик формата определяет порядок интерпретации спецификатора формата.
Поставщик формата создается путем реализации интерфейса 1дсгквасргоойг(ег, в котором определяется метод пег гопвас () . Для всех встроенных числовых типов и многих других типов данных в среде .НЕТ Ргатекаог(к предопределены соответствующие поставщики формата. Вообще говоря, данные можно отформатировать, не указывая конкретный поставщик формата, поэтому поставщики формата не рассматриваются далее в этой книге. Для того чтобы отформатировать данные, достаточно включить спецификатор формата в метод, поддерживающий форматирование.
О применении спецификаторов формата речь уже шла в главе 3, тем не менее к этому вопросу стоит вернуться вновь. Применение спецификаторов формата рассматривается далее на примере метода Сопзо1е. Иг1се(,1пе (), хотя аналогичный подход применим и к другим методам, поддерживающим форматирование. Для форматирования выводимых данных служит следующая форма метода ИгйгеЫпе (): Нгггевгпе("форматир)ааааа строка", агдо, агд1, ..., агдм) к В этой форме аргументы метода Нгйсегфпе () разделяются запятой, а не знаком +. А форматируюлкая строка состоит из двух следующих элементов: обычных печатаемых символов, отображаемых в исходном виде, а также команд форматирования.
Ниже приведена общая форма команд форматирования. (агдпив, ттг(СЛ: йтг) где агдпот — это номер отображаемого аргумента, начиная с нуля; м1 к(СЛ вЂ” минимальная ширина поля, а Гпг — спецификатор формата. Параметры мкс(сп и аког не являются обязательными. Поэтому в своей простейшей форме команда форматирования просто указывает конкретные аргументы для отображения. Например, команда ( () ) указывает аргумент агдО, команда (1) — аргумент агд1 и тд. Если во время выполнения программы в форматирующей строке встречается команда форматирования, то вместо нее подставляется и затем отображается соответствующий аргумент, определяемый параметром агдпив.