Сравнение строк
Обновлен: Ноябрь 2007
Платформа .NET Framework предоставляет несколько методов для сравнения значений строк. В следующей таблице перечислены и описаны методы сравнения значений.
Название метода |
Использование |
---|---|
Сравнение значений двух строк. Возвращает целое значение. |
|
Сравнение двух строк независимо от выбранного языка и региональных параметров. Возвращает целое значение. |
|
Сравнение текущего строкового объекта с другой строкой. Возвращает целое значение. |
|
Определение того, начинается ли строка с переданной строки. Возвращает логическое значение. |
|
Определение того, заканчивается ли строка переданной строкой. Возвращает логическое значение. |
|
Определение совпадения строк. Возвращает логическое значение. |
|
Определение индекса позиции знака или строки, начиная с начала проверяемой строки. Возвращает целое значение. |
|
Определение индекса позиции знака или строки, начиная с конца проверяемой строки. Возвращает целое значение. |
Compare
Метод String.Compare предоставляет способ аккуратного сравнения текущего строкового объекта с другой строкой или объектом. Этот метод учитывает языковые и региональные параметры. Данная функция может применяться для сравнения двух строк или подстрок двух строк. Кроме того, имеются перегруженные методы, которые учитывают или не учитывают регистр, а также языковые и региональные различия. В следующей таблице представлены три целых значения, возвращаемые этим методом.
Тип значения |
Условие |
---|---|
Отрицательное целое число |
strA меньше strB. |
0 |
strA равна strB. |
Положительное целое число либо 1 |
Этот экземпляр больше value. либо value является пустой ссылкой (Nothing в Visual Basic). |
Важное примечание. |
---|
Метод Compare предназначен в основном для использования при упорядочивании или сортировке строк. Не следует использовать метод Compare для проверки совпадения (то есть для явного поиска возвращаемого значения 0 безотносительно того, какая строка больше другой). Для определения совпадения двух строк следует использовать метод String.Equals(String, String, StringComparison). |
В следующем примере метод Compare используется для определения относительных значений двух строк.
Dim MyString As String = "Hello World!"
Console.WriteLine([String].Compare(MyString, "Hello World?"))
string MyString = "Hello World!";
Console.WriteLine(String.Compare(MyString, "Hello World?"));
Этот пример выводит на консоль текст -1.
Предыдущий пример по умолчанию зависит от языка и региональных параметров. Для выполнения сравнения строк без учета этих факторов используется перегрузка метода String.Compare, которая позволяет указать язык и региональные параметры путем передачи параметра culture. Пример использования метода String.Compare для сравнения строк без учета языка и региональных параметров см. в разделе Сравнение строк без учета языка и региональных параметров.
CompareOrdinal
Метод String.CompareOrdinal сравнивает два строковых объекта без учета локального языка и региональных параметров. Возвращаемые значения этого метода идентичны приведенным в предыдущей таблице значениям, возвращаемым методом Compare.
Важное примечание. |
---|
Метод CompareOrdinal предназначен в основном для использования при упорядочивании или сортировке строк. Не следует использовать метод CompareOrdinal для проверки совпадения (то есть для явного поиска возвращаемого значения 0 безотносительно того, какая строка больше другой). Для определения совпадения двух строк следует использовать метод String.Equals(String, String, StringComparison). |
В следующем примере метод CompareOrdinal используется для сравнения значений двух строк.
Dim MyString As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(MyString, "hello world!"))
string MyString = "Hello World!";
Console.WriteLine(String.CompareOrdinal(MyString, "hello world!"));
Этот пример выводит на консоль текст -32.
CompareTo
Метод String.CompareTo сравнивает строку, которая хранится внутри текущего строкового объекта, с другой строкой или объектом. Возвращаемые значения этого метода идентичны приведенным в предыдущей таблице значениям, возвращаемым методом Compare.
Важное примечание. |
---|
Метод CompareTo предназначен в основном для использования при упорядочивании или сортировке строк. Не следует использовать метод CompareTo для проверки совпадения (то есть для явного поиска возвращаемого значения 0 безотносительно того, какая строка больше другой). Для определения совпадения двух строк следует использовать метод String.Equals(String, String, StringComparison). |
В следующем примере метод CompareTo используется для сравнения объекта MyString с объектом OtherString.
Dim MyString As String = "Hello World"
Dim OtherString As String = "Hello World!"
Dim MyInt As Integer = MyString.CompareTo(OtherString)
Console.WriteLine(MyInt)
String MyString = "Hello World";
String OtherString = "Hello World!";
int MyInt = MyString.CompareTo(OtherString);
Console.WriteLine( MyInt );
Этот пример выводит на консоль текст 1.
Все перегруженные методы String.CompareTo по умолчанию выполняют сравнение с учетом языка, региональных параметров и регистра. У этого метода не существует перегрузок, позволяющих выполнять сравнение без учета языка и региональных параметров. В целях повышения ясности кода рекомендуется использовать метод String.Compare, указывая CultureInfo.CurrentCulture для операций с учетом языка и региональных параметров или CultureInfo.InvariantCulture для операций без учета языка и региональных параметров. Примеры использования метода String.Compare для выполнения сравнения с учетом языка и региональных параметров и без учета языка и региональных параметров см. в разделе Сравнение строк без учета языка и региональных параметров.
Equals
С помощью метода String.Equals легко определяется совпадение двух строк. Метод учитывает регистр и возвращает логическое значение true или false. Метод можно вызывать из существующего класса, как это показано в следующем примере. Здесь метод Equals используется для определения того, содержится ли в строковом объекте фраза "Hello World".
Dim MyString As String = "Hello World"
Console.WriteLine(MyString.Equals("Hello World"))
string MyString = "Hello World";
Console.WriteLine(MyString.Equals("Hello World"));
Этот пример выводит на консоль текст True.
Этот метод также может использоваться в качестве статического. В следующем примере два строковых объекта сравниваются с помощью статического метода.
Dim MyString As String = "Hello World"
Dim YourString As String = "Hello World"
Console.WriteLine(String.Equals(MyString, YourString))
string MyString = "Hello World";
string YourString = "Hello World";
Console.WriteLine(String.Equals(MyString, YourString));
Этот пример выводит на консоль текст True.
StartsWith и EndsWith
Метод String.StartsWith используется для определения того, начинается ли объект строки с тех же знаков, из которых состоит другая строка. Этот метод учитывает регистр и возвращает значение true, если текущий строковый объект начинается с переданной строки, или значение false, если это не так. В следующем примере этот метод используется для определения того, начинается ли строковый объект со слова "Hello".
Dim MyString As String = "Hello World"
Console.WriteLine(MyString.StartsWith("Hello"))
string MyString = "Hello World";
Console.WriteLine(MyString.StartsWith("Hello"));
Этот пример выводит на консоль текст True.
Метод String.EndsWith сравнивает переданную строку со знаками, находящимися в конце текущего строкового объекта. Этот метод также возвращает логическое значение. В следующем примере с помощью метода EndsWith проверяется конец строки.
Dim MyString As String = "Hello World"
Console.WriteLine(MyString.EndsWith("Hello"))
string MyString = "Hello World";
Console.WriteLine(MyString.EndsWith("Hello"));
Этот пример выводит на консоль текст False .
IndexOf и LastIndexOf
Метод String.IndexOf используется для определения места первого вхождения отдельного знака в строку. Этот метод учитывает регистр и начинает отсчет от начала строки, возвращая позицию переданного знака с отсчетом от нуля. Если знак не найден, возвращается значение –1.
В следующем примере метод IndexOf используется для поиска первого вхождения знака "l".
Dim MyString As String = "Hello World"
Console.WriteLine(MyString.IndexOf("l"c))
string MyString = "Hello World";
Console.WriteLine(MyString.IndexOf('l'));
Этот пример выводит на консоль текст 2.
Метод String.LastIndexOf подобен методу String.IndexOf за тем исключением, что он возвращает положение последнего вхождения определенного знака в строку. Этот метод учитывает регистр и использует индексацию с нуля.
В следующем примере метод LastIndexOf используется для поиска последнего вхождения знака "l".
Dim MyString As String = "Hello World"
Console.WriteLine(MyString.LastIndexOf("l"c))
string MyString = "Hello World";
Console.WriteLine(MyString.LastIndexOf('l'));
Этот пример выводит на консоль текст 9.
Оба метода удобно использовать в сочетании с методом String.Remove. Для получения позиции знака используется метод IndexOf или LastIndexOf , после чего эта позиция передается методу Remove для удаления знака или слова, начинающегося с этого знака.
См. также
Другие ресурсы
Выполнение строковых операций, не зависящих от языка и региональных параметров