🔷 C#

Строки и работа с текстом в C# (.NET 6): подробное руководство

Строки и работа с текстом в C#

Введение: Зачем нам работать с текстом?

Представь, что ты пишешь сообщение другу, создаешь название для новой игры или анализируешь текст песни. В программировании весь текст (слова, фразы, символы) хранится в специальном типе данных — строка (по-английски string).

Умение работать со строками позволяет программе:

  • Читать то, что ввел пользователь
  • Сравнивать слова (например, проверить пароль)
  • Вырезать часть текста (как в задаче с хештегом)
  • Считать количество символов или слов
  • Переворачивать текст (как в задаче про обратное сообщение)

Основной синтаксис: Как создать строку

Строка в C# — это последовательность символов, заключенная в двойные кавычки "...".

using System;

class Program
{
    static void Main()
    {
        // Создаем строки
        string name = "SuperGadget X";
        string hashtag = "#ЛучшийДеньДляПрограммирования";
        string emptyString = ""; // Пустая строка
        
        Console.WriteLine("Название гаджета: " + name);
        Console.WriteLine("Хештег: " + hashtag);
        Console.WriteLine("Длина строки name: " + name.Length + " символов");
    }
}

Вывод программы:

Название гаджета: SuperGadget X
Хештег: #ЛучшийДеньДляПрограммирования
Длина строки name: 14 символов

Главные методы для работы со строками

У строк есть методы — это специальные команды, которые помогают с ними работать. Вот самые полезные:

1. Длина строки — .Length

Считает количество символов (включая пробелы).

string text = "Привет, мир!";
Console.WriteLine("Количество символов: " + text.Length); // 12

2. Извлечение части строки — .Substring(начало, длина)

Позволяет взять только часть текста. Нумерация символов начинается с 0!

string hashtag = "#ЛучшийДеньДляПрограммирования";
// Хотим взять только первые 7 символов (начиная с 0)
string shortHashtag = hashtag.Substring(0, 7);
Console.WriteLine(shortHashtag); // #Лучший

3. Поиск в строке — .IndexOf("текст")

Находит позицию (индекс) первого вхождения текста. Если не находит — возвращает -1.

string song = "Я помню чудное мгновенье";
int position = song.IndexOf("чудное");
Console.WriteLine("Слово 'чудное' начинается с индекса: " + position); // 7

4. Замена — .Replace("старое", "новое")

Заменяет одну часть текста на другую.

string text = "Я люблю Java";
string newText = text.Replace("Java", "C#");
Console.WriteLine(newText); // Я люблю C#

5. Разделение на слова — .Split("разделитель")

Разбивает строку на массив строк по указанному символу.

string songLyrics = "Hello world from C#";
string[] words = songLyrics.Split(' '); // Разделяем по пробелу
Console.WriteLine("Количество слов: " + words.Length); // 4

6. Преобразование регистра — .ToUpper() и .ToLower()

string message = "Привет, Мир!";
Console.WriteLine(message.ToUpper()); // ПРИВЕТ, МИР!
Console.WriteLine(message.ToLower()); // привет, мир!

Разбор типичных задач

Задача 1: Количество слов в песне

У нас есть текст песни. Нужно посчитать, сколько в нем слов.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Введите текст песни:");
        string song = Console.ReadLine();
        
        // Разбиваем строку на слова по пробелам
        string[] words = song.Split(' ');
        
        Console.WriteLine("Количество слов в песне: " + words.Length);
    }
}

Задача 2: Вырезать часть хештега

У нас есть длинный хештег. Нужно взять только первые 10 символов.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Введите хештег:");
        string hashtag = Console.ReadLine();
        
        // Проверяем, что хештег длиннее 10 символов
        if (hashtag.Length > 10)
        {
            string shortHashtag = hashtag.Substring(0, 10);
            Console.WriteLine("Короткий хештег: " + shortHashtag);
        }
        else
        {
            Console.WriteLine("Хештег слишком короткий, оставляем как есть: " + hashtag);
        }
    }
}

Задача 3: Обратное сообщение

Нужно перевернуть строку задом наперед.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Введите сообщение:");
        string message = Console.ReadLine();
        
        // Превращаем строку в массив символов
        char[] charArray = message.ToCharArray();
        // Переворачиваем массив
        Array.Reverse(charArray);
        // Создаем новую строку из перевернутого массива
        string reversed = new string(charArray);
        
        Console.WriteLine("Перевернутое сообщение: " + reversed);
    }
}

Частые ошибки новичков

  • Забывают, что индексация начинается с 0. Первый символ имеет индекс 0, второй — 1 и так далее. Substring(0, 5) — это символы с 0 по 4.
  • Пытаются взять Substring с несуществующим индексом. Если строка длиной 5 символов, а вы пишете Substring(3, 10), программа выдаст ошибку. Всегда проверяйте длину!
  • Путают кавычки. Строки всегда в двойных кавычках " ", а отдельные символы — в одинарных ' '.
  • Забывают, что Split возвращает массив. Количество элементов в массиве — это количество слов + количество разделителей. Если в строке 3 слова и 2 пробела, то Split вернет массив из 3 элементов.

Итоговый пример: Анализ названия NFT

Представь, что ты создаешь NFT-коллекцию. Ты придумал название, но хочешь проверить, не слишком ли оно длинное для площадки (максимум 20 символов). Также нужно убедиться, что название написано большими буквами.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Введите название для NFT:");
        string nftName = Console.ReadLine();
        
        // Проверяем длину
        if (nftName.Length > 20)
        {
            Console.WriteLine("Название слишком длинное! Нужно сократить.");
            // Обрезаем до 20 символов
            string shortName = nftName.Substring(0, 20);
            Console.WriteLine("Предлагаю сократить до: " + shortName);
        }
        else
        {
            Console.WriteLine("Отличная длина! Название подходит.");
        }
        
        // Переводим в верхний регистр (для красоты)
        string upperName = nftName.ToUpper();
        Console.WriteLine("Название заглавными буквами: " + upperName);
        
        // Считаем количество слов в названии
        string[] words = nftName.Split(' ');
        Console.WriteLine("Количество слов в названии: " + words.Length);
    }
}

Пример работы программы:

Введите название для NFT:
Космический Кот 3000
Отличная длина! Название подходит.
Название заглавными буквами: КОСМИЧЕСКИЙ КОТ 3000
Количество слов в названии: 3

Теперь ты знаешь главные инструменты для работы с текстом в C#. Пробуй, экспериментируй и создавай свои программы!