Строки в C# (1 часть)
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали, как работать с массивами в C#. В данной статье я бы хотел рассказать, о том, что такое строки в C#, какое они имеют значение и разобрать основные методы по работе с ними. Как по мне, так строки имеют самое важное (из всех типов) значение в языке C#. В отличие от множества других языков, где строки являются последовательностью символов, в C# строки — это объекты. Обычно при создании строковой переменной мы не используем ключевое слово new. Хотя можно создавать строки из последовательности символов. Пример:
static void Main(string[] args) { string str1 = "Hellow WOrld!"; char[] charArray = {'h','e','l','l','o','w' }; string str2 = new string(charArray); Console.WriteLine(str1); Console.WriteLine(str2); Console.ReadLine(); }
Также, как и в массивах, к элементам строк можно обращаться по индексу:
Console.WriteLine(str1[1]); //e
Сразу отмечу, что таким способом нельзя заменить одну букву на другую. Таким образом (через индекс) можно только получить элемент строки.
Также у строк имеется свойство Length, которое возвращает длину строки:
Console.WriteLine(str1.Length); //13
В классе String существует большое количество методов, многих из которых перегружены (т.е. один и тот же метод может принимать различное количество параметров). Рассмотрим наиболее часто используемые методы для работы со строками:
1) Метод int CompareTo(string str2). Данный метод возвращает отрицательное значение, если вызывающая строка меньше строки str2, положительное — если вызывающая строка больше строки str2 и 0 — если строки равны между собой. Проверять равенство строк можно с помощью простого оператора "==". Давайте на примере рассмотрим метод CompareTo():
string str = "Первая строка"; Console.WriteLine(str.CompareTo("Рервая строка")); //-1 Console.WriteLine(str.CompareTo("Первая строка")); //0 Console.WriteLine(str.CompareTo("Оервая строка")); //1 Console.ReadLine();
Думаю на данном примере должен быть понятен принцип работы данного метода.
2) Метод int IndexOf(string str2). Данный метод ищет подстроку str2 в вызывающей строке и возвращает индекс первого вхождения. Есть также метод int LastIndexOf(string str2), который делает то же самое, но возвращает индекс последнего вхождения:
string str = "Первая строка первая"; Console.WriteLine(str.IndexOf("ерв")); //1 Console.WriteLine(str.LastIndexOf("ерв")); //15 Console.ReadLine();
3) Метод ToLower() приводит строку к прописному варианту (делает все буквы маленькими). Метод ToUpper() делает все буквы большими:
string str = "Первая сТрока Первая"; Console.WriteLine(str.ToLower()); Console.WriteLine(str.ToUpper()); Console.ReadLine();
4) Также существует очень полезный метод Trim(), который обрубает все пробелы, как в начале, так и в конце строки. Также можно обрубить только в начале (TrimStart()) или только в конце (TrimEnd()):
string str = " Строка с пробелами "; Console.WriteLine("Строка без всех пробелов: {0}. Её длина = {1}", str.Trim(), str.Trim().Length); Console.WriteLine("Строка без начальных пробелов: {0}. Её длина = {1}", str.TrimStart(), str.TrimStart().Length); Console.WriteLine("Строка без конечных пробелов: {0}. Её длина = {1}", str.TrimEnd(), str.TrimEnd().Length); Console.ReadLine();
5) Метод Contains() служит для того, чтобы проверить, есть ли в строке подстрока или символ:
string str = "Тестовая строка"; if (str.Contains("ест")) Console.WriteLine("да"); //передаем строку if (str.Contains('а')) Console.WriteLine("да"); //передаем символ Console.ReadLine();
Обращаю ваше внимание, что строка передаётся в двойных кавычках, в символ — в одинарных.
6) Метод Substring(start, length) позволяет взять из текущей строки определенную часть, начиная с индекса start. Если указан индекс length, то берется определенная последовать символов, начиная с start и заканчивая start + length. Если length не указан, то подстрока берется до конца исходной строки:
string str = "Тестовая строка"; Console.WriteLine(str.Substring(6)); //"ая строка" Console.WriteLine(str.Substring(6, 4)); //"ая с" Console.ReadLine();
Здесь я привел далеко не все методы, но самые необходимые.
Совет: прежде чем писать какой-то свой метод, всегда посмотрите, может быть есть уже стандартный метод, который реализует то, что вам нужно.
Домашнее задание: пусть имеется строка "Моя тестовая строка". Необходимо вывести меню, состоящее из двух пунктов. Первый пункт — "строка начинается с", второй пункт — "строка заканчивается на". При нажатии на каждый из этих пунктов пользователю предлагается ввести кусок строки. Допустим, если пользователь выбрал пункт "строка начинается с" и ввел "Моя" (регистр важен), то ему вывести сообщение "Всё верно!", а если нет — то "Вы ошиблись!".
В данной статье вы узнали, что такое строки в C#, как с ними работать и какие для этого существуют методы, и как их использовать. Это была первая статья по работе со строками в C#. В следующей статье мы разберем разбиение и сборку строк, а также рассмотрим методы Insert(), Remove() и Replace().
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.