1. Изучаем подробнее тип string
Тип string — один из самых используемых типов в C#. Возможно, вообще самый используемый. Это просто великолепный тип, ведь в таких переменных можно хранить текст. А еще, в отличие от типов int и double, у объектов типа string есть куча различных функций, и с помощью этих функций можно делать различные интересные вещи.
Кроме того, все объекты в C# (вообще все) могут быть преобразованы в тип string. Ну или, если сказать более корректно, все объекты в C# возвращают свое текстовое (строковое) представление. Мы будем еще не раз возвращаться к этому типу (очень уж он полезный и интересный), но сегодня познакомимся с его основами.
Создание переменных типа string
Тип string создан для хранения строк (текста). Чтобы создать в коде переменную, которая будет способна хранить текст, нужно воспользоваться командой:
string имя;
Где имя — это имя переменной.
Примеры:
| Команда | Описание |
|---|---|
| string name; | Создается строковая переменная name |
| string message; | Создается строковая переменная message |
| string text; | Создается строковая переменная text |
Так же, как с типами int и double, можно использовать краткую запись для создания нескольких переменных типа string:
string имя1, имя2, имя3;
2. Присваивание значений переменным типа string
Чтобы занести в переменную типа string значение, нужно воспользоваться командой:
имя = "значение";
А вот и первое отличие типа от уже изученных. Все значения типа string представляют собой строки текста и должны быть заключены в двойные кавычки.
Примеры:
| Команда | Примечание |
|---|---|
| string name = "Аня"; | Переменная name содержит текст Аня |
| string city = "New York"; | Переменная city содержит текст New York |
| string message = "Hello!"; | Переменная message содержит текст Hello! |
3. Инициализация переменных типа string
Как и в случае с типами int и double, переменные типа string можно инициализировать сразу при создании. Это, кстати, можно делать вообще со всеми типами в C#. Так что больше мы об этом говорить не будем.
string имя1 = "строка1", имя2 = "строка2";
Пример создания и инициализации переменных
string name = "Аня", city = "New York", message = "Hello!";
Менять можно только переменные со значением
C#-компилятор будет ругаться, если вы объявите переменную, не присвоив ей никакого значения и попробуете ее использовать.
Такой код работать не будет:
string name;
Console.WriteLine(name); // Переменная name не инициализирована. Программа не скомпилируется.
int a;
a++; // Переменная a не инициализирована. Программа не скомпилируется.
double x;
double y = x; // Переменная x не инициализирована. Программа не скомпилируется.
4. Конкатенация — склеивание строк
Есть очень интересная и простая вещь, которую можно делать со строками в C# — их можно склеивать. Такая операция называется конкатенация. Ну или чтобы легче запомнилось — Кон-Котэ-Нация. Хотя часто ее называют «склеивание строк» или даже просто «сложение строк».
Чтобы склеить две строки, нужно использовать знак +. Это очень просто:
"значение1" + "значение2"
Примеры:
| Команда | Примечание |
|---|---|
| string name = "Аня" + "Аня"; | name содержит строку АняАня |
| string city = "New York" + "Аня"; | city содержит строку New YorkАня |
| string message = "Hello! " + "Аня"; | message содержит строку Hello! Аня |
Ну и, конечно, одновременно можно складывать много строк, а также складывать строки и переменные.
Примеры:
string name = "Аня"; // name содержит строку Аня
string city = "New York"; // city содержит строку New York
string message = "Hello!" + city + name + city; // message содержит строку Hello!New YorkАняNew York
5. Пустые строки
В последнем примере видно, что текст в переменной message плохо читается, т.к. в нем не хватает пробелов. Чтобы задать один пробел или несколько, нужно просто написать их в коде и обернуть в двойные кавычки. Это проще, чем кажется:
" "
Кстати, если между кавычками совсем не оставить места (написать две двойные кавычки подряд), получится так называемая «пустая строка»:
""
С одной стороны, она вроде бы и есть, а с другой, при ее выводе на экран ничего не выводится. И при склейке с другими строками ничего не происходит. Эдакий аналог нуля, только для строк.
6. Экранирование спецсимволов в строках
Вы уже знаете, что строки обрамляются двойными кавычками. Но что делать, если нужно вставить в строку кавычки? Если мы напишем кавычки в строке, разве компилятор не посчитает их как окончание строки?
Правильно. Посчитает. Поэтому кавычки внутри текста заменяются парой символов \". И код будет выглядеть вот так:
string quote = "Он сказал: \"Здравствуйте!\"";
Console.WriteLine(quote); // Он сказал: "Здравствуйте!"
На самом деле все еще немного хитрее. Символ \ считается специальным (управляющим) символом внутри строк. С его помощью можно задавать различные "непечатные символы" типа переноса строки, табуляции и т.п. Ну а чтобы задавать сам символ \ его нужно написать 2 раза.
Вот 4 самые распространённые комбинации:
| Запись | Значение |
|---|---|
| \n | Перенос строки (newline) |
| \t | Табуляция (отступ) |
| \\ | Буквально \ |
| \" | Кавычки внутри строки |
Пример:
string multiline = "Строка 1\nСтрока 2";
Console.WriteLine(multiline);
Выведет:
// Строка 1
// Строка 2
7. Интерполяция строк ($-строки)
C# — очень современный язык, и он позволяет легко и красиво вставлять значения переменных внутрь строки с помощью операции интерполяции — просто добавьте перед кавычками символ $, а внутри строки используйте фигурные скобки {}. Об этом вы уже знаете.
А вот чего вы еще не знаете, так это того, что внутри фигурных скобок можно использовать целые выражения и даже вызывать функции! Пример:
string name = "Оля";
int birthYear = 1999;
string info = $"Меня зовут {name}, мне {2025-birthYear} лет.";
Console.WriteLine(info); // Меня зовут Оля, мне 26 лет.
Такой подход резко повышает читаемость и уменьшает количество ошибок (и скобок). Подробнее про интерполяцию поговорим на отдельной лекции, но для простых случаев уже можно смело использовать.
8. Собственные функции строк
У типа string есть собственные функции (их еще называют методами). Их очень много, и они облегчают жизнь программистам. Сегодня вы познакомитесь с некоторыми (самыми простыми) из них. Пример:
| Функция | Описание | Пример результата |
|---|---|---|
| str.Length | Длина строки | "abc".Length → 3 |
| str.ToUpper() | В верхний регистр | "abc".ToUpper() → "ABC" |
| str.ToLower() | В нижний регистр | "ABC".ToLower() → "abc" |
| str.Trim() | Удалить пробелы по краям | " x y ".Trim() → "x y" |
Примеры работы с функциями строк
Все эти функции вызываются вот так: переменная.функция(...) .
Определить длину строки:
string name = "Андрей";
int length = name.Length;
Console.WriteLine(length); // 6, т.к. 6 букв
Перевести строку в верхний или нижний регистр:
string original = "Привет";
Console.WriteLine(original.ToUpper()); // ПРИВЕТ
Console.WriteLine(original.ToLower()); // привет
Удалить пробелы по краям (очень полезно при вводе с клавиатуры):
string messy = " hello ";
Console.WriteLine(messy.Trim()); // "hello"
Каждая такая функция возвращает новую строку, старая строка при этом не меняется.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ