Робота з рядками

Вправи з використанням рядкового типу даних(string).

1. Реверс рядка

Реверс – перетворення символів рядка, коли остання буква в тексті стає першою, а перша - останньою.

Завдання: Написати програму для отримання реверсного рядка.

Рішення
using System;

class Program
{
    static string Reverse(string str)
    {
        //змінна для зберігання результату
        var retValue = string.Empty;
        foreach(var symbol in str)
        {
            //приклеюємо символ на початок рядка
            retValue = symbol + retValue;
        }

        return retValue;
    }

    static void Main(string[] args)
    {
        Console.Write("Введіть текст для реверсування: ");
        var s = Console.ReadLine();
        Console.WriteLine($"Реверс рядка: {Reverse(s)}");
        Console.ReadLine();
    }
}

2. Капіталізація тексту

Капіталізація тексту – зміна перших букв в словах на великі. Наприклад: “заголовок статті” після перетворення – “Заголовок Статті”.

Завдання: Написати програму, яка здійснює капіталізацію введеного користувачем тексту. В якості розділювача слів використовувати пробіл.

Підказка

Для вирішення завдання капіталізації рядка, необхідно:

  • Прочитати введений користувачем текст;
  • Розбити його на окремі слова;
  • Для кожного слова отримати першу букву та змінити її регістр;
  • Видалити з кожного слова перший символ;
  • Об’єднати отримане значення першого символу з залишком від слова;
  • Після обробки всіх слів, об’єднати їх в один рядок.
Рішення
using System;

class Program
{
    static string CapitalizeString(string s)
    {
        //розбиваємо текст на слова
        var parts = s.Split(" ", StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < parts.Length; i++)
        {
            //отримуємо першу літеру
            var firstLetter = parts[i].Substring(0, 1).ToUpper();
            //з'єднуємо символ та залишок від слова
            parts[i] = firstLetter + parts[i].Remove(0, 1);
        }

        //склеюємо масив рядків
        return string.Join(" ", parts);
    }

    static void Main(string[] args)
    {
        Console.Write("Введіть текст для перетворення: ");
        var s = Console.ReadLine();

        var result = CapitalizeString(s);
        Console.WriteLine($"Результат: {result}");

        Console.ReadLine();
    }
}

3. Паліндром

Паліндром – слово чи текст, який читається однаково як зліва направо, так і справа наліво.

Завдання: Перевірити, чи є введений користувачем, текст паліндромом. Пробіли та регістр символів в рядку ігнорувати.

Підказка

Алгоритм вирішення задачі з паліндромом:

  • Отримати текст з клавіатури;
  • Видалити з нього всі пробіли;
  • Перевести символи рядка в один регістр(не має значення в який, використовуйте той, з яким вам зручніше працювати);
  • Послідовно порівнювати символи з початку та кінця рядка наближаючись до середини: перший з останнім, другий з другим з кінця і т.д.
Рішення
using System;

class Program
{
    static bool IsPalindrom(string text)
    {
        //видаляємо пробіли
        var s = text.Replace(" ", string.Empty);
        //переводимо в нижній регістр
        s = s.ToLower();
        //індекс останнього символу
        int lastIndex = s.Length - 1;
        for (int i = 0; i < s.Length / 2; i++)
        {
            //якщо символи не однакові, повертаємо false
            if (s[i] != s[lastIndex - i])
            {
                return false;
            }
        }

        return true;
    }

    static void Main(string[] args)
    {
        Console.Write("Введіть рядок для перевірки: ");
        var text = Console.ReadLine();
        var res = IsPalindrom(text) ? string.Empty : "не ";
        Console.WriteLine($"Рядок \"{text}\" {res}є паліндромом");
        Console.ReadLine();
    }
}

Також перевірку можна реалізувати шляхом порівняння рядка з його реверсом(метод описано вище):

static bool IsPalindrom(string text)
{
    //видаляємо пробіли
    var s = text.Replace(" ", string.Empty);
    //переводимо в верхній регістр
    s = s.ToUpper();
    //порівнюємо рядок з його реверсом
    return s == Reverse(s);       
}

Дивіться також: