JavaRush /Курсы /C# SELF /Основные методы класса string

Основные методы класса string

C# SELF
9 уровень , 3 лекция
Открыта

1. Введение

На практике чаще всего встречаются такие задачи со строками:

  • Получить длину строки (и узнать, не пуста ли она).
  • Поменять регистр букв (сделать ВСЁ ВЕРХНИМ или всё нижним).
  • Найти, содержит ли строка искомое слово или символ.
  • Заменить "плохое слово" на более приличное.
  • Разбить строку на части по разделителю ("список телефонов через запятую").
  • Удалить пробелы в начале и конце строки.
  • Получить часть строки (например, первые 3 буквы фамилии).
  • Сравнить две строки — совпадают ли они, если игнорировать регистр.

И для каждой такой задачи у класса string есть свой метод.

Таблица ключевых методов

Операция Метод/Свойство Пример
Длина строки
Length
name.Length
Первый символ
[0]
name[0]
Последний символ
[name.Length - 1]
name[name.Length - 1]
К нижнему регистру
ToLower()
name.ToLower()
К верхнему регистру
ToUpper()
name.ToUpper()
Проверить, есть ли подстрока
Contains()
name.Contains("Иван")
Позиция подстроки
IndexOf()
name.IndexOf("а")
Извлечь часть строки
Substring()
name.Substring(1, 3)
Сравнить строки
Equals(), ==
name.Equals("Петр")
Удалить пробелы
Trim()
name.Trim()
Разбить по разделителю
Split()
csv.Split(',')
Объединить массив в строку
string.Join()
string.Join("-", array)
Заменить часть
Replace()
text.Replace("старое", "новое")
Пустая строка?
IsNullOrEmpty()
string.IsNullOrEmpty(name)

Сегодня мы разберем некоторые из них.

2. Работаем со строкой как с массивом

Длина строки: свойство Length

Самое простое — узнать, сколько символов в строке. Для этого мы воспользуемся свойством Length. Пример:

string name = "Аркадий";
Console.WriteLine(name.Length);  // Выведет: 7
  • Length — это свойство (не метод), поэтому скобки не нужны.
  • Если строка пустая (""), длина будет 0.

Иногда полезно проверять длину строки перед тем, как делать с ней что-то "опасное" (например, брать подстроку).

Получение символа по индексу: индексатор [i]

Как при работе с массивами: строка — это массив символов. Пример:

string hello = "Привет";
char firstChar = hello[0]; 	// 'П'
char lastChar = hello[^1]; 	// 'т'
Console.WriteLine(firstChar);
  • Индексация начинается с нуля!
  • Будьте аккуратны: если обратиться к несуществующему индексу (hello[100]), будет выброшено исключение.

3. Сравнение строк

Строчные операторы == и !=

В языке C# данные операторы просто сравнивают две строки по их содержимому.

string word1 = "Hello";
string word2 = "Hello";
bool areEqual = word1 == word2; // true

Метод Equals

В отличие от оператора ==, в метод Equals можно передавать параметры. Например, сравнить строки без учета регистра — когда "Мама" == "мама" и равно "МАМА". Пример:

string pass1 = "Qwerty";
string pass2 = "qwerty";

// стандартное сравнение с учетом регистра
bool isSame = pass1.Equals(pass2); // false

// сравнение без учета регистра
bool ignoreCase = pass1.Equals(pass2, StringComparison.OrdinalIgnoreCase); // true

4. Преобразование регистра

Для того, чтобы преобразовать строку к верхнему (или нижнему) регистру, у класса string есть 2 специальных метода: ToLower() и ToUpper().

Хотите, чтобы пользователь видел ваше сообщение в стиле "ВАЖНО!"? Или же нужно привести все имена к нижнему регистру для сравнения? Это просто:

string text = "Мне Не Страшен Серый Волк!";
Console.WriteLine(text.ToUpper()); // МНЕ НЕ СТРАШЕН СЕРЫЙ ВОЛК!
Console.WriteLine(text.ToLower()); // мне не страшен серый волк!
  • Обратите внимание: исходная строка не изменяется!
  • Можно использовать для проверки на совпадение строк без учёта регистра.

5. Удаление лишних пробелов

А что если пользователь случайно (или специально, кто их разберёт) добавил пробелы до и после имени? Trim поможет! Он существует в трёх вариантах:

  • Trim — удаляет все пробелы в начале и в конце строки;
  • TrimStart — удаляет пробелы в начале строки;
  • TrimEnd — удаляет пробелы в конце строки.
string raw = "   Гоша   ";
string cleaned = raw.Trim(); 		// "Гоша"
Console.WriteLine($"[{cleaned}]");

6. Получение подстроки: Substring

Иногда нужно вытащить из строки только часть.

string word = "Привет";
string part = word.Substring(2);      // "ивет"
string part2 = word.Substring(2, 3);  // "иве"
  • Substring(startIndex) — с символа startIndex до конца.
  • Substring(startIndex, length) — начиная с startIndex столько символов, сколько указано в length.

Внимание: если выходите за границы строки или length < 0, получите исключение!

7. Проверка строки на пустоту

Перед использованием строки (например, в интерполяции) стоит проверить, что она не равна null и не пуста, иначе можно получить ошибку или неожиданный результат.

a) Проверка на null с помощью оператора ==

string s = null;
if (s == null)
    Console.WriteLine("Строка равна null");

Минус: не ловит пустую строку ("").

b) Проверка с помощью string.IsNullOrEmpty()

Проверяет и null, и пустую строку:

string s = "";
if (string.IsNullOrEmpty(s))
    Console.WriteLine("Строка пуста или равна null");

c) Проверка с помощью string.IsNullOrWhiteSpace()

Дополнительно учитывает строки, которые состоят только из пробелов, табуляций и других “невидимых” символов:

string s = "     ";
if (string.IsNullOrWhiteSpace(s))
    Console.WriteLine("Строка пуста, null или только из пробелов");

8. Типичные ошибки при работе со строковыми методами

  • Самое частое — забыть, что строки неизменяемы (immutable), как мы выше уже разобрали.
  • Ещё одна популярная оплошность — забыть про чувствительность к регистру при поиске и сравнении.

Например, если пользователь введёт имя "андрей", а в списке уже есть "Андрей", то простое использование Contains или == может не сработать, если вы не приведёте обе строки к одному регистру или не воспользуетесь соответствующей перегрузкой метода.

Также будьте осторожны с методами, которые возвращают индексы. Индексы начинаются с нуля, и если вернулся -1, значит ничего не найдено, а не "индекс 0".

2
Задача
C# SELF, 9 уровень, 3 лекция
Недоступна
Подсчёт длины строки и её начального и конечного символов
Подсчёт длины строки и её начального и конечного символов
2
Задача
C# SELF, 9 уровень, 3 лекция
Недоступна
Удаление пробелов и преобразование регистра
Удаление пробелов и преобразование регистра
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ