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