Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.NET предоставляет несколько методов для сравнения значений строк. В следующей таблице перечислены и описываются методы сравнения значений.
Имя метода | Использование |
---|---|
String.Compare | Сравнивает значения двух строк. Возвращает целочисленное значение. |
String.CompareOrdinal | Сравнивает две строки без учета локального языка и региональных параметров. Возвращает целочисленное значение. |
String.CompareTo | Сравнивает текущий объект строки с другой строкой. Возвращает целочисленное значение. |
String.StartsWith | Определяет, начинается ли строка с переданной строки. Возвращает логическое значение. |
String.EndsWith | Определяет, заканчивается ли строка переданной строкой. Возвращает логическое значение. |
String.Contains | Определяет, находится ли символ или строка в другой строке. Возвращает логическое значение. |
String.Equals | Определяет, совпадают ли две строки. Возвращает логическое значение. |
String.IndexOf | Возвращает позицию индекса символа или строки, начиная с начала проверяемой строки. Возвращает целочисленное значение. |
String.LastIndexOf | Возвращает позицию индекса символа или строки, начиная с конца проверяемой строки. Возвращает целочисленное значение. |
Compare
Метод
Статический String.Compare метод обеспечивает тщательный способ сравнения двух строк. Этот метод учитывает культурные особенности. Эту функцию можно использовать для сравнения двух строк или подстроок двух строк. Кроме того, предоставляются перегрузки, учитывающие или игнорирующие регистр и культурные различия. В следующей таблице показаны три целочисленные значения, возвращаемые этим методом.
Возвращаемое значение | Состояние |
---|---|
Отрицательное целое число | Первая строка предшествует второй строке в порядке сортировки. -или- Первая строка — null . |
0 | Первая строка и вторая строка равны. -или- Обе строки являются null . |
Положительное целое число -или- 1 |
Первая строка следует второй строке в порядке сортировки. -или- Вторая строка — null . |
Это важно
Метод String.Compare в основном предназначен для использования при упорядочении или сортировке строк. Вы не должны использовать метод String.Compare для проверки равенства (то есть для поиска возвращаемого значения 0, игнорируя то, является ли одна строка меньше или больше другой). Вместо этого, чтобы определить, равны ли две строки, используйте String.Equals(String, String, StringComparison) метод.
В следующем примере метод используется String.Compare для определения относительных значений двух строк.
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))
В этом примере -1
отображается на консоли.
Предыдущий пример изначально учитывает культурные особенности. Чтобы выполнить сравнение строк без учета культурных различий, используйте перегрузку метода String.Compare, которая позволяет указать используемую культуру, предоставив параметр культуры. Пример демонстрирующий, как использовать метод String.Compare для выполнения сравнения, нечувствительного к культуре, см. в разделе "Сравнение строк без учета культуры".
CompareOrdinal
Метод
Метод String.CompareOrdinal сравнивает два строковых объекта без учета локальной культуры. Возвращаемые значения этого метода идентичны значениям, Compare
возвращаемым методом в предыдущей таблице.
Это важно
Метод String.CompareOrdinal в основном предназначен для использования при упорядочении или сортировке строк. Вы не должны использовать метод String.CompareOrdinal для проверки равенства (то есть для поиска возвращаемого значения 0, игнорируя то, является ли одна строка меньше или больше другой). Вместо этого, чтобы определить, равны ли две строки, используйте String.Equals(String, String, StringComparison) метод.
В следующем примере метод используется CompareOrdinal
для сравнения значений двух строк.
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))
В этом примере -32
отображается на консоли.
CompareTo
Метод
Метод String.CompareTo сравнивает строку, которую текущий объект строки инкапсулирует с другой строкой или объектом. Возвращаемые значения этого метода идентичны значениям, String.Compare возвращаемым методом в предыдущей таблице.
Это важно
Метод String.CompareTo в основном предназначен для использования при упорядочении или сортировке строк. Вы не должны использовать метод String.CompareTo для проверки равенства (то есть для поиска возвращаемого значения 0, игнорируя то, является ли одна строка меньше или больше другой). Вместо этого, чтобы определить, равны ли две строки, используйте String.Equals(String, String, StringComparison) метод.
В следующем примере метод используется String.CompareTo для сравнения string1
объекта с string2
объектом.
string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)
В этом примере -1
отображается на консоли.
Все перегрузки метода String.CompareTo по умолчанию выполняют сравнения с учетом культуры и регистра. Перегрузки этого метода не предусмотрены, что позволяет выполнить сравнение без учета языковых и региональных параметров. Для ясности кода рекомендуется вместо этого использовать метод String.Compare
, указывая CultureInfo.CurrentCulture для операций, чувствительных к языковым и региональным параметрам, или CultureInfo.InvariantCulture для операций, нечувствительных к этим параметрам. Примеры, демонстрирующие использование метода String.Compare
для выполнения культурно-зависимых и культурно-независимых сравнений строк, см. в разделе "Выполнение Culture-Insensitive сравнения строк".
Equals
Метод
Метод String.Equals может легко определить, совпадают ли две строки. Этот метод, учитывающий регистр, возвращает значение типа true
false
Boolean. Его можно использовать из существующего класса, как показано в следующем примере. В следующем примере метод используется Equals
для определения того, содержит ли строковый объект фразу Hello World.
string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))
В этом примере True
отображается на консоли.
Этот метод также можно использовать в качестве статического метода. В следующем примере сравниваются два строковых объекта с помощью статического метода.
string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))
В этом примере True
отображается на консоли.
методы StartsWith
и EndsWith
Метод можно использовать String.StartsWith для определения того, начинается ли строковый объект с теми же символами, которые охватывают другую строку. Этот метод с учетом регистра возвращает true
, если текущий объект строки начинается с переданной строки, и false
, если не начинается. В следующем примере этот метод используется для определения начала строкового объекта с "Hello".
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))
В этом примере True
отображается на консоли.
Метод String.EndsWith сравнивает переданную строку с символами, существующими в конце текущего объекта строки. Он также возвращает булевое значение. В следующем примере проверяется конец строки с помощью EndsWith
метода.
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))
В этом примере False
отображается на консоли.
методы IndexOf
и LastIndexOf
Вы можете использовать метод String.IndexOf для определения позиции первого вхождения определенного символа в строке. Этот метод, учитывающий регистр, начинает подсчет с начала строки и возвращает позицию переданного символа с использованием индекса, начинающегося с нуля. Если не удается найти символ, возвращается значение –1.
В следующем примере используется метод IndexOf
для поиска первого вхождения символа 'l
' в строке.
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))
В этом примере 2
отображается на консоли.
Метод String.LastIndexOf аналогичен String.IndexOf
методу, за исключением того, что он возвращает позицию последнего вхождения определенного символа в строке. Он учитывает регистр и использует отсчитываемый от нуля индекс.
В следующем примере используется метод LastIndexOf
для поиска последнего вхождения символа 'l
' в строке.
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))
В этом примере 9
отображается на консоли.
Оба метода полезны при использовании в сочетании с методом String.Remove . Вы можете использовать методы IndexOf
или LastIndexOf
методы для получения позиции символа, а затем предоставить эту позицию Remove
методу, чтобы удалить символ или слово, начинающееся с этого символа.
См. также
- Рекомендации по использованию строк в .NET
- Базовые строковые операции
- Выполнение строковых операций без учета культуры
- Сортировка таблиц весов, используемых .NET Framework и .NET Core 1.0-3.1 в Windows
- Таблица элементов сортировки Юникода по умолчанию используется .NET 5 на всех платформах и .NET Core в Linux и macOS