JavaRush /Курси /C# SELF /Рядки та текст: тип string...

Рядки та текст: тип string, робота з рядками

C# SELF
Рівень 2 , Лекція 2
Відкрита

1. Детальніше про тип string

Тип string — один із найуживаніших у C#. Можливо, навіть найпопулярніший. Він надзвичайно зручний: у змінних цього типу зберігають текст. До того ж, на відміну від int і double, об’єкти типу string мають чимало методів, за допомогою яких можна робити багато корисного.

Усі об’єкти в C# (буквально всі) можуть бути перетворені на тип string. Точніше, кожен об’єкт у C# має своє текстове (рядкове) подання. Ми ще не раз повернемося до цього типу — він справді корисний і цікавий, — а сьогодні розглянемо його основи.

Створення змінних типу string

Тип string призначений для зберігання рядків (тексту). Щоб оголосити змінну, здатну зберігати текст, скористайтеся інструкцією:

string ім'я;
Створення змінної типу string

Де імʼя — це назва змінної.

Приклади:

Інструкція Опис
string name; Оголошується рядкова змінна name
string message; Оголошується рядкова змінна message
string text; Оголошується рядкова змінна text

Як і з типами int і double, можна використовувати короткий запис для оголошення кількох змінних типу string:

string ім'я1, ім'я2, ім'я3;
Створення змінних типу string

2. Присвоєння значень змінним типу string

Щоб надати змінній типу 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

Приклад створення та ініціалізації змінних

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); // Він сказав: "Вітаю!"

Насправді все трохи хитріше. Символ \ є керівним усередині рядків. За його допомогою задають різні «непечатні» символи — перехід на новий рядок, табуляцію тощо. А щоб отримати сам символ \, його потрібно написати двічі.

Ось чотири найуживаніші комбінації:

Запис Значення
\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"

Кожен такий метод повертає новий рядок; старий рядок при цьому не змінюється.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ