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