Для проверки двух строк на равенство служит оператор ==. Как правило, если оператор == применяется к ссылкам на объект, то он определяет, являются ли они ссылками на один и тот же объект. Совсем иначе обстоит дело с объектами типа string
. Когда оператор == применяется к ссылкам на две строки, он сравнивает содержимое этих строк. Это же относится и к оператору !=. В обоих случаях выполняется порядковое сравнение. Для проверки двух строк на равенство с учетом культурной среды служит метод Equals()
, где непременно нужно указать способ сравнения в виде аргумента StringComparison.CurrentCulture
. Следует также иметь в виду, что метод Compare()
служит для сравнения строк с целью определить отношение порядка, например для сортировки. Если же требуется проверить символьные строки на равенство, то для этой цели лучше воспользоваться методом Equals()
или строковыми операторами.
В приведенном ниже примере программы демонстрируется несколько операций со строками.
// Некоторые операции со строками.
using System;
using System.Globalization;
class StrOps {
static void Main() {
string strl = "Программировать в .NET лучше всего на С#.";
string str2 = "Программировать в .NET лучше всего на С#.";
string str3 = "Строки в C# весьма эффективны.";
string strUp, strLow;
int result, idx;
Console.WriteLine("strl: " + strl);
Console.WriteLine("Длина строки strl: " + strl.Length);
// Создать варианты строки strl, набранные
// прописными и строчными буквами.
strLow = strl.ToLower(CultureInfo.CurrentCulture);
strUp = strl.ToUpper (CultureInfo.CurrentCulture);
Console.WriteLine("Вариант строки strl, " +
"набранный строчными буквами:\n " + strLow);
Console.WriteLine("Вариант строки strl, " +
"набранный прописными буквами:\n " + strUp);
Console.WriteLine();
// Вывести строку strl посимвольно.
Console.WriteLine("Вывод строки strl посимвольно.");
for (int i=0; i < strl.Length; i++)
Console.Write(strl[i]);
Console.WriteLine("\n");
// Сравнить строки способом порядкового сравнения,
if (strl == str2)
Console.WriteLine("strl == str2");
else
Console.WriteLine("strl != str2");
if (strl == str3)
Console.WriteLine("strl == str3");
else
Console.WriteLine("strl != str3");
// Сравнить строки с учетом культурной среды.
result = string.Compare(str3, strl, StringComparison.CurrentCulture) ;
if(result == 0)
Console.WriteLine("Строки strl и str3 равны");
else
if (result < 0)
Console.WriteLine("Строка strl-меньше строки str3");
else
Console.WriteLine("Строка strl больше строки str3");
Console.WriteLine();
// Присвоить новую строку переменной str2.
str2 = "Один Два Три Один";
// Поиск подстроки.
idx = str2.IndexOf("Один", StringComparison.Ordinal);
Console.WriteLine("Индекс первого вхождения подстроки <Один>: " + idx);
idx = str2.LastIndexOf("Один", StringComparison.Ordinal);
Console.WriteLine("Индекс последнего вхождения подстроки <0дин>: " + idx) ;
}
}
При выполнении этой программы получается следующий результат.
strl: Программировать в .NET лучше всего на С#.
Длина строки str1: 41
Вариант строки str1, набранный строчными буквами: