Строки в 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

Полезные методы

Метод

Что делает

ToUpper()

перевести в верхний регистр

ToLower()

перевести в нижний регистр

Trim()

убрать пробелы по краям

Contains(s)

содержит ли подстроку

StartsWith(s)

начинается ли с подстроки

Replace(old, new)

заменить все вхождения

Substring(start, len)

вырезать подстроку

Split(sep)

разбить на массив строк

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.
Проверьте себя
1. Как правильно вставить переменную name в строку?
A"Привет, " + name
B$"Привет, {name}"
Cf"Привет, {name}"
D"Привет, $name"
2. Что вернёт "Hello".Length?
A4
B5
C6
Dошибку
3. Что делает " hello ".Trim()?
AУдаляет все пробелы из строки
BУбирает пробелы только в начале и в конце
CПереводит строку в нижний регистр
DРазбивает строку по пробелам
4. Что возвращает "abc" == "ABC"?
Atrue
Bfalse
Cошибку компиляции
Dзависит от ОС

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект