Строки в C# — основы
Строки в C#: что такое string, как создавать, соединять и сравнивать строки, базовые свойства и методы.
Строка (
string) — последовательность символов Unicode, заключённая в двойные кавычки. В C# строки являются объектами типаSystem.Stringи неизменяемы: любая операция создаёт новую строку, а не меняет исходную.
Объявление и инициализация
string greeting = "Привет, мир!";
string empty = ""; // пустая строка
string nullStr = null; // строка-null (не ссылается ни на что)
// var выводит тип автоматически
var name = "Алиса";
Console.WriteLine(name.GetType()); // System.String
Конкатенация
Строки можно соединять оператором + или методом string.Concat:
string firstName = "Иван";
string lastName = "Петров";
string full = firstName + " " + lastName;
Console.WriteLine(full);
Вывод:
Иван Петров
Каждый
+создаёт новую строку в памяти. Если склеиваете много строк в цикле — используйтеStringBuilder(отдельная статья этого раздела).
Интерполяция строк
Самый удобный способ вставить переменную в текст — интерполяция: строка начинается с $, а выражения оборачиваются в {}.
string name = "Алиса";
int age = 25;
Console.WriteLine($"Меня зовут {name}, мне {age} лет.");
Вывод:
Меня зовут Алиса, мне 25 лет.
Внутри {} можно писать любые выражения:
double price = 199.9;
Console.WriteLine($"Итого: {price * 1.2:F2} руб."); // форматирование
Вывод:
Итого: 239.88 руб.
Длина строки и доступ к символам
string word = "Привет";
Console.WriteLine(word.Length); // 6 — количество символов
Console.WriteLine(word[0]); // П — символ по индексу (с нуля)
Console.WriteLine(word[word.Length - 1]); // т — последний символ
Вывод:
6 П т
Сравнение строк
Оператор == сравнивает содержимое (не ссылки, как в некоторых языках):
string a = "hello";
string b = "Hello";
Console.WriteLine(a == b); // False
Console.WriteLine(a.Equals(b, StringComparison.OrdinalIgnoreCase)); // True — без учёта регистра
Вывод:
False True
Полезные методы
Метод | Что делает |
| перевести в верхний регистр |
| перевести в нижний регистр |
| убрать пробелы по краям |
| содержит ли подстроку |
| начинается ли с подстроки |
| заменить все вхождения |
| вырезать подстроку |
| разбить на массив строк |
string text = " Hello, World! ";
Console.WriteLine(text.Trim()); // "Hello, World!"
Console.WriteLine(text.Trim().ToLower()); // "hello, world!"
Console.WriteLine(text.Contains("World")); // True
Console.WriteLine(text.Replace("World", "C#")); // " Hello, C#! "
string csv = "яблоко,груша,слива";
string[] fruits = csv.Split(',');
Console.WriteLine(fruits[1]); // груша
Вывод:
Hello, World! hello, world! True Hello, C#! груша
Коротко
- Строки в C# неизменяемы; каждая операция создаёт новый объект.
- Для вставки переменных используйте интерполяцию
$"...". Length— длина строки; символы доступны по индексу[i].==сравнивает содержимое; для регистронезависимого сравнения используйтеStringComparison.OrdinalIgnoreCase.- Ключевые методы:
Trim,ToUpper,Contains,Replace,Split,Substring.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.