Шаг 99.
Язык программирования C#. Начала
Работа с текстом. Методы для работы с текстом (продолжение)

    На этом шаге мы рассмотрим методы, используемые для вставки, замены и получения фрагмента текста.

    Методы Insert(), Remove() и Replace() используются соответственно для вставки одной строки в другую, удаления части строки и замены одной части строки на другую.


Еще раз подчеркнем, что во всех перечисленных случаях речь идет не об изменении исходного текстового объекта, а о создании нового текстового объекта на основе уже существующего.

    Методу Insert() при вызове передается первый целочисленный аргумент, определяющий место вставки подстроки, и собственно подстрока, предназначенная для вставки в исходную строку. Результатом метод возвращает новый созданный текстовый объект.

    Методу Remove() передается два целочисленных аргумента: первый определяет позицию, начиная с которой в текстовой строке удаляются символы, а второй аргумент определяет количество удаляемых символов. Новая строка, сформированная путем удаления из исходного текста символов в указанном диапазоне индексов, возвращается результатом метода.

    Методу Replace() аргументами могут передаваться два символа или две текстовые строки. При вызове метода из текстового объекта формируется (и возвращается результатом) новая текстовая строка, которая получается заменой в исходном тексте символа или подстроки, указанной первым аргументом, на символ или подстроку, указанную вторым аргументом.

    Также стоит упомянуть метод Substring(), который позволяет извлечь подстроку из текста. Аргументом методу передается целочисленное значение, определяющее индекс, начиная с которого извлекается подстрока (подстрока извлекается до конца текста). Если передать второй целочисленный аргумент, то он будет определять количество символов, включаемых в извлекаемую подстроку. Подстрока возвращается результатом метода. Исходный текст при этом не меняется.

    Как перечисленные выше методы используются на практике, иллюстрирует приведенная ниже программа.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr99_1
{
    class Program
    {
        static void Main()
        {
            // Исходный текст:
            String txt = "Mы изучаем C#";
            // Проверка исходного текста:
            Console.WriteLine(txt);
            // Текстовая переменная:
            String str;
            // Вставка слова в текст: 
            str = txt.Insert(11, "язык ");
            // Проверка текста:
            Console.WriteLine(str);
            // Вставка в текст слоза с последующим замещением
            // другого текстового блока:
            str = str.Insert(3, "не ").Replace("C#", "Java");
            // Проверка текста:
            Console.WriteLine(str);
            // Замена пробелов на подчеркивания: 
            str = str.Replace(' ', '_');
            // Проверка текста:
            Console.WriteLine(str);
            // Извлечение подстроки: 
            str = str.Substring(2, 12);
            // Проверка текста:
            Console.WriteLine(str);
            // Извлечение подстроки: 
            str = txt.Substring(3);
            // Проверка текста:
            Console.WriteLine(str);
            // Проверка исходного текста:
            Console.WriteLine(txt);
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

    Результат выполнения программы такой.


Рис.1. Вставка и замещение текста

    В программе объявляется текстовая переменная txt со значением "Мы изучаем С#". Значение этой переменной выводится в консоль. Также объявляется текстовая переменная str. Первое значение этой переменной присваивается командой

  str = txt.Insert(11, "язык ");         . 

    Значением является текст, который получается добавлением строки "язык " в текстовое значение, на которое ссылается переменная txt. Строка вставляется, начиная с позиции с индексом 11.

    При выполнении команды

  str = str.Insert(3, "не ").Replace("C#", "Java");
переменная str получает новое текстовое значение, которое вычисляется следующим образом. Сначала на основе текущего (вычисленного на предыдущем шаге) значения переменой str путем вставки в позицию с индексом 3 строки "не " формируется новый текст. Ссылка на этот текст возвращается инструкцией str.Insert(3, "не "). Другими словами, мы можем интерпретировать выражение str.Insert(3, "не ") как текстовый объект. Из этого текстового объекта вызывается метод Replace() с аргументами "С#" и "Java". Это означает, что на основе текста, сформированного командой str.Insert(3, "не "), создается новый текст: вместо строки "С#" вставляется строка "Java". То, что получилось, присваивается значением переменной str. Командой
  str = str.Replace(' ', '_');
в тексте, на который ссылается переменная str, пробелы (символ ' ') заменяются на подчеркивания (символ '_'). Получающийся в результате текст присваивается новым значением переменной str.

    Командой

  str = str.Substring(2, 12);
из текущего текстового значения, на которое ссылается переменная str, извлекается подстрока: текст формируется из 12 символов, начиная с позиции с индексом 2 (при этом исходная строка не меняется). Сформированное значение присваивается переменной str. Еще один пример извлечения подстроки дает команда
  str = txt.Substring(3);             . 
В данном случае из текста, на который ссылается переменная txt, извлекается подстрока: начиная с позиции с индексом 2 и до конца текста. Подстрока присваивается значением переменной str. Значение переменной txt не меняется.


Метод Trim(), если он вызван без аргументов, позволяет удалить начальные и конечные пробелы в тексте, из которого он вызван (метод возвращает новую текстовую строку). Если методу передать char-аргументы (произвольное количество), то они определяют символы, которые удаляются из начала и конца текста.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг