ПРИМЕЧАНИЕ
В силу отличий способов сравнения строк с учетом культурной среды и порядкового сравнения, а также последствий каждого такого сравнения настоятельно рекомендуется руководствоваться лучшими методиками, предлагаемыми в настоящее время корпорацией Microsoft. Ведь выбор неверного способа сравнения строк может привести к неправильной работе программы, когда она эксплуатируется в среде, отличающей от той, в которой она разработана.
Выбор способа сравнения символьных строк представляет собой весьма ответственное решение. Как правило и без всякий исключений, следует выбирать сравнение строк с учетом культурной среды, если это делается для целей отображения результата пользователю (например, для вывода на экран ряда строк, отсортированных в лексикографическом порядке). Но если строки содержат фиксированную информацию, не предназначенную для видоизменения с учетом отличий в культурных средах, например, имя файла, ключевое слово, адрес веб-сайта или значение, связанное с обеспечением безопасности, то следует выбрать порядковое сравнение строк. Разумеется, особенности конкретного разрабатываемого приложения будут диктовать выбор подходящего способа сравнения символьных строк.
В классе String предоставляются самые разные методы сравнения строк, перечисленные в табл. 22.1. Наиболее универсальным среди них является метод Compare (). Он позволяет сравнивать две строки полностью или частично, с учетом или без учета регистра, способа сравнения, определяемого параметром типа StringComparison, а также сведений о культурной среде, предоставляемых с помощью параметра типа Culturelnfo. Те перегружаемые варианты метода Compare (), которые не содержат параметр типа StringComparison, выполняют сравнение символьных строк с учетом регистра и культурной среды. А в тех перегружаемых его вариантах, которые не содержат параметр типа Culturelnfo, сведения о культурной среде определяются текущей средой выполнения. В примерах программ, приведенных в этой главе, параметр типа Culturelnfo не используется, а большее внимание уделяется использованию параметра типа StringComparison.
Таблица 22.1. Методы сравнения символьных строк
Метод
Назначение
public static int
Сравнивает строку strA со строкой strB. Возвращает поло
Compare(string strA,
жительное значение, если строка strA больше строки strB;
string strB)
отрицательное значение, если строка strA меньше строки strB; и нуль, если строки strA и strB равны. Сравнение выполняется с учетом регистра и культурной среды
public static int
Сравнивает строку strA со строкой strB. Возвращает поло
Compare(string strA,
жительное значение, если строка strA больше строки strB;
string strB, bool
отрицательное значение, если строка strA меньше строки
ignoreCase)
strB; и нуль, если строки strA и strB равны. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Сравнение выполняется с учетом культурной среды
public static int
Сравнивает строку strA со строкой strB. Возвращает положи
Compare(string
тельное значение, если строка strA больше строки strB; отрица
strA, string strB,
тельное значение, если строка strA меньше строки strB-, и нуль,
StringComparison
если строки strA и strB равны. Параметр comparisonType
comparisonType)
определяет конкретный способ сравнения строк
public static int.
Сравнивает строку strA со строкой strB, используя информа
Compare(string
цию о культурной среде, определяемую параметром culture.