Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 147
Текст из файла (страница 147)
По умолчанию используется кодирование типа АЯС11кпсок(1пд. Класс Япсос(1по находится в пространстве имен Яузсекл. техс. В этих конструкторах применяются указатели, и поэтому их можио использовать только в небезопасном коде. При объявлении строкового литерала автоматически создается строковый объект. 'Поэтому для инициализации строкового объекта зачастую оказывается достаточно присвоить ему строковый литерал: всгспд всг = "новая строка" Поле, индексатор и свойство класса з~~~пд В классе Ясг1пч определено единственное поле: рпЬ11с вгаг1с гевк(оп1у вггспд Етргу Поле етлрсу обозначает пустую строку, т.е.
такую строку, которая ие содержит символы, в отличие от пустой ссылки типа Ягг1по, и просто делается иа несуществующий объект. Помимо этого, в классе Ясг1пкт определен единственный иидексатор, доступный только для чтения: рпвссс спаг Сися(спг 1к(х] ( деС; ) Этот иидексатор позволяет получить символ по указанному индексу. Индексация строк, как и массивов, начинается с нуля. Объекты типа Ясгспд отличаются постояиством и ие изменяются, поэтому вполне логично, что в классе Ясг1по поддерживается иидексатор, доступный только для чтения. И наконец, в классе я с гспо определено единственное свойство, доступное только для чтения: рпЬ11с 1пг Ьепдгь ( Чегт ! Свойство селось возвращает количество символов в строке.
Операторы класса Зйк ~лд В классе Ясгспд перегружаются два следующих оператора: == и ! =. Оператор == служит для проверки двух строк иа равенство. Когда оператор == применяется к ссылкам иа объекты, ои обычно проверяет, делаются ли обе ссылки иа один и тот же объект. А когда оператор == применяется к ссылкам иа объекты типа ясгспо, то на предмет равенства сравииваегся содержимое самих строк Это же отвосится и к оператору ! =. Когда оп применяется к ссылкам иа объекты типа Ясгспо, то иа предмет неравенства сравиивается содержимое самих строк.
В то же время другие операторы отношения, в том числе < и >=, сравнивают ссылки иа объекты типа Ясгспд, как и иа объекты других типов. А для того чтобы проверить, является ли одна строка больше другой, следует вызвать метод Сотлраге (), определенный в классе Яггспо. 748 Часть )(. Библиотека Сз Методы класса в~к ~ад В классе ВСгспд определен обширный ряд методов, причем многие из иих имеют две и более перегружаемые формы. По этой причине ие имеет никакого практического смысла перечислять все эти методы.
Вместо этого ниже будут представлены лишь наиболее употребительные методы наряду с примерами их применения. Сравнение строк Сравнение одной строки с другой едва ли ие самая распространенная операция обработки строк. В силу особого значения, которое придается этой операции в программировании, в классе ясг1пд определены самые разные методы сравнения строк, перечися ленные в табл. 22.1. Но при сравнении строк следует иметь в виду культурные отличия. В тех методах, которым ие передается информация культурного характера, используются текущие настройки параметров культурного характера.
таблица 22.1. Методы сравнения строк Метод рпЫгс якаг1с гпг Совраге(яггспд ягг1, якг1пд яСг2) рпЫ1с якакгс гпС Совраге(ягггпд ягг1, якггпд ягг2, Ьоо1 гдпогеСяяе) рпЫгс якаС1с спС Вовраге(якггпд ягг1, ягггпд ягг2, Яггспдсоврагсяоп способ) риЫгс якакгс гпС Саврасе(якгспд ягг1, якг1пд ягг2, Ьоо1 гдпогеСяяе, Си1Ссге1псо с1) Наэначение Сравнивает строку ясг1 Са Стрсксй яггг. Возвращает положительное значение, если строка я сг1 больше строки я сг2; отрицательное значение, если строка я сг1 меньше строки ясг2; и нуль, если строки ягг1 и ягг2 равны Сравнивает строку я сг) Са Строкой я Сгг.
Возцзацает положительное значение, если строка я сг1 больше строки я сг2; отрицательное значение, если строка я с г1 меньше строки я сг2; и нуль, если строки ясг1 и я сг2 равны, Если параметр гдпогясяяя принимаетлопвческое значение сгпя, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются СраВНИВаЕт СтрОКу я вы Са СтрОКОй ягг2.
ВОЗВращаЕт положительное значение, если строка ясг1 больше строки ясгг; отрицательное значение, если строка я сг) меньше строки я сг2; и нуль, если строки ясг1 и я сг2 равны. Параметр способ определяет конкретный Споеоб сравнения строк Сравнивает строку я сг) со строкой я сгг, используя информацию кулыурного характера, определяемую параметром сгк Возвращает положительное значение, если строка ясг) больше строки ясгг; отрицательное значение, если строка ясг1 меньше строки ясг2; И НУЛЬ ЕСЛИ СтрОКИ яг -1 И яггг раВНЫ. ЕСЛИ ПараМЕтр г дно гя саяе принимает логическое значение с гне, то при сравнении не учитываются различия мех(цу прописным и строчным вариантами букв.
В противном случае эти различия учитываются. Класс сп1ссгетпго определен в пространстве имен зуясев. с1оья11гэссоп Продолжение табл. 22! Назначение риЫГО якаСГО Гпк Соираге(явгспд яог1, Гпк яоагС1, якгспд ягг2, 1пС ягагС2, ГпС соил с) РиЫГО яваСГО Гпк Соидаге(ЯСГ1пд ягг1, 1пС ягагС1, якггпд ягг2, спС ягагС2, Гпт Ооипг, ЬОО1 1дпогеСаяе) риЫГО ятаСГО спС Сопраге(яггспд 5СГ1, 1пС ягагС1, якгспд 5СГ2 1пС 5СВГС2 1ОС Обипг, ЯСГ1пдсоараг1воп способ) риЫГО якаСГО Гпг Солктаге (яггспд 5СГ1 1пС ягяГС1, 5СГ1пд 5СГ2 Гпв яеагС2, спС ОоипС, ЬОО1 1дпогеСаяе, СП1Сиге1пго с1) риЫГО этаСГО 1пС Соирагебгс(спа1(5СГ1пд ягг1, 5СГ1пд 5СГ2) Глава 22, Строки н форматирование 749 Сравнивает части строк я с Г1 и я сг2. Сравнение начина- ется со строковых элементов яг 1 [5СагСг ( и ясг2(ясягс2) и включает количество символов, определяемых параметром соил с.
Метод возвращает положительное значение, если часть строки 5 сг1 больше части строки 5Сг2; отрицательное значение, если часть строки 5 сг1 меньше части строки 5 сг2; и нуль, если сравниваемые части строк яог1 И ягг2 равны Сравнивает части строк ясг1 и 5 сг2.
Сравнение начина- ется со строковых элементов ясг1 (ясягс1) и ясг2(ясягс2) и включает количество символов, определяемых параметром со ил с. Метод возвращает положительное значение, если часть строки 5 сг1 больше части строки я ог2; ОтрицатЕЛьнОЕ ЗначЕниЕ, ЕСЛИ чаетЬ СтрОКИ я СГ1 МеНЬШЕ ЧаетИ СтрОКИ яег2; И Нупгь ЕСЛИ сравниваемые части строк яог1 и 5СГ2 равны. Если параметр 1дпогясяяе принимает логическое значение сгие, то при сравнении не учитываются различия между прописным и строчным вариантами букв, В противном случае эти различия учитываются Сравнивает части строк яс 1 и ясгг.
Сравнение начина- ется со строковых элементов ясг1 (ясягс1) и ясг2(ясягс2) и включает количество символов, определяемых параметром сбил с. Метод возвращает положительное значение, если часть строки 5 с Г1 больше ЧаотИ СтрОКИ 5 Сг2; ОтрИцатЕЛЬНОЕ ЗНаЧЕНИЕ, ЕСЛИ ЧаСтЬ строки ясг1 меньше части строки ясг2; и нуль, если сравниваемые части строк ясг1 и 5 сгг равны.
Параметр Сласоб ОПРЕДЕЛЯЕТ конкрЕтный СпоСоб сравнения строк Сравнивает части строк якг1 И ягг2, используя инфор- мацию культурного характера, определяемую параме- тром О1. Сравнение начинается со строковых элементов ясг1(ясягсц иясг2(ясягс2) ивключаетколиче- ство символов, определяемых параметром Опипс. Метод возвращает положительное значение, если часть строки 5 сг1 больше части строки 5 сг2; отрицательное значе- ние, если часть строки 5 СГ1 меньше части строки 5СГ2; и нуль, если сравниваемые части строк ясг1 и ясг2 равны, Если параметр Гдпогесаяе принимаетлогиче- ское значение сгие, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются.
Класс си1сиге1псо определен в пространстве имен зуясем. 61ОЬа111аС1оп Сравнивает строку 5 сгт со строкой 5 с г2 независимо от информации кулыурного, регионального и языкового характера. Возвращает положительное значение, если строка яс .1 больше строки 5СГ2; отрицательное значе- ние, если строка ясг1 меньше строки ясг2; и нуль, если строки ясг1 и ясг2 равны 750 Часть Н.
Библиотека С№ Оковяние твбв. 2(,! Назначение роо11с ягаксс сп Сокрагеогцспа1(вкгспс ягг1, 1пг ягягг1, вггспд ягг2, спк ягвгг2, спС соипС) роп11о спС Соерагето(оЬЗеоС вгг) рон11о спС СоврагеТо(ятг1пч ягг) Среди всех методов сравнения наиболее универсальным является метод совраге () .
Он позволяет сравнивать две строки полностью или частично, с учетом регистра нли же без учета регистра. Вообще говоря, при сравнении строк используется лексикографический порядок, чтобы определить, является ли одна строка большей, меньшей или равной другой. Кроме того, сравнение строк можно производить с учетом информации культурного характера.
В приведенном ниже примере программы демонстрируется применение разных вариантов метода Соврете () . // Сравнить строки. цяспч Яувкее! 11(ЗСгспд.Сократе(вкг1, вкг2) Сопво1е.нгскеьспе(якг1 + " и е1ве Сопяо1е.иг1Сенспе(ягг1 ч " и == О) " + вкг2 + " равны."); " + ясг2 ь " не равны."); 11(5Сг1пд.сверака(втг1, вггЗ) = О) Сопво1е.нгскенспе(вкг1 + " н " ь вкгЗ + " равны."); о1авв Соерагереео ( воаСсо чокд Масп() ( ясг1пЯ всг1 = ' Олин"; всгспч вкг2 = "один"; всгспс Яггз = "ОДИН" ! ясгспд яссе = "два"! втг1пс втг5 "один также"; Сравнивает части строк я сг1 н я сг2 независимо от информации культурного, регионального н языкового ха- рактера. Сравнение начинается со строковьи злементов ясг1 (ясягс1) и ясг2(ясвгс2) н включает количе- ство символов, определяемых параметром оопп с.
Метод возвращает положительное значение, если час!ь строки я сг1 больше части строки я сг2; отрицательное значе- ние, если часть строки я сг.1 меньше часш строки я сг2; и нуль, если сравниваемые части строк я сг1 И ягг2рааНЫ Сравнивает вызывающую строку со строкой я сг. Возвращает положительное значение, если вызывающая строка больше строки в сг; отрицательное значение, если вызывающая строка меньше строки я сг; и нуль, если сравниваемые строки равны Сравнивает вызывающую строку со строкой я с -. Возвращает положительное значение, если вызывающая строка больше строки в сг; отрицательное значение, если вызывающая строка меньше строки я сг; и нуль, если сравннваемье строки равны Глава 22. Строки и форматирование 751 е1зе Сопзо1е.игатеЬЬпе(ятг1 + " и " + зтгЗ + " не равны."); 11(зтг1пд.совраге(зтг1, ятгЗ, Ггие) = 0) Сопяо1е.Иг1теьапе(зтг1 + " и " + ятгз + " равны без учета регистра."); е1зе Сопяо1е.иг1геЬ1пе(ятг1 + " и " + зттз + " не равны без учета регистра."); гр(5тг1пд.совраге(зтг1, ятг5) == 0) Сопзо1е.иг1теЬ1пе(зсг1 + " и " + зтг5 + " равны."); е1зе Сопяо1е.иг1тевапе(зтг1 + " и " + зтг5 + " не равны."); 11(зтг1пд.Саврасе(зтг1, О, ятг5, О, 3) 0) Сопзо1е.иггтепапе("Первые части отрок " + зтг1 + " и " + зтг5 + " равны."); е1яе Сопяо1е.Иггтеьапе("Первые части строк " + ягг1 ь " и " + ягг5 4 " не равны.")! Ьпт гезо1Г = зттапд.Соврате(зтг1, ятт4); 1Е(геяп1Г < 0) Сопзо1е.игатедапе(зтг1 + " меньше " 4 зтг4); е1зе 11(гезп1Г > 0) Сопзо1е.нгьтеььпе(зтг1 + " больше " + зтг4); е1яе Сопзо1е.Иг1теЬ1пе(зтг1 + " равно " + ятг4); Ниже приведен результат выполнения этой программы.
один и один равны. один и ОДИН не равны. один и ОДИН равны без учета региатра. один и один также не равны. Первые части отрок один и один также равны. один больше два Применение перечисления 8 егхпдсотрагдяоп Обратите внимание в табл. 22.1 на два варианта метода совраге (), принимающих параметр типа ягг1пдСоврагазоп.