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

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

    Есть и другие полезные методы, предназначенные для работы с текстом. Скажем, с помощью метода ToUpper() на основе текстового объекта, из которого вызывается метод, формируется текстовая строка, состоящая из прописных (больших) букв исходного текста. Метод ToLower() возвращает строку, состоящую из строчных (маленьких) букв исходного текста. Можно сказать и проще: метод ToUpper() делает все буквы большими, а метод ToLower() делает все буквы маленькими. Нужно только помнить, что исходные текстовые объекты (из которых вызываются методы) не меняются, а речь идет о возвращаемом методами тексте.

    Метод ToCharArray() результатом возвращает ссылку на символьный массив (тип char[]) из букв исходного текста (текстового объекта, из которого вызывается метод). Метод полезен в случаях, когда текстовое значение нужно разбить на отдельные символы. Похожая задача решается с помощью метода Split(). Метод результатом возвращает текстовый массив (тип string[]), элементами которого являются подстроки из исходного текста. Текстовый объект, из которого вызывается метод, разбивается на подстроки, причем символы, которые являются разделителями для определения мест разбивки исходного текста, передаются аргументами методу. Количество таких символьных аргументов произвольно. Если первым аргументом методу передать символьный массив (элементы которого играют роль разделителей при разбивке строки), а вторым аргументом указать целое число, то оно будет определять максимальное количество подстрок, на которые разбивается исходная текстовая строка. Если методу Split() аргументы не переданы, то по умолчанию разделителем считается пробел. Пример использования методов ToUpper(), ToLower(), ToCharArray() и Split() представлен в примере ниже.

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

namespace pr100_1
{
    class Program
    {
        static void Main()
        {
            // Исходная текстовая строка:
            String txt = "Дорогу осилит идущий";
            // Отображение исходного текста:
            Console.WriteLine(txt);
            // Текстовая строка:
            String str;
            // Текст с символами в верхнем регистре: 
            str = txt.ToUpper();
            // Проверка текстового значения:
            Console.WriteLine(str);
            // Текст с символами в нижнем регистре: 
            str = txt.ToLower();
            // Проверка текстового значения:
            Console.WriteLine(str);
            // Переменная для текстового массива:
            String[] words;
            // Разбивка текста на подстроки: 
            words = txt.Split();
            // Отображение подстрок:
            for(int k = 0; k < words.Length; k++) {
                Console.WriteLine((k + 1) + ": " + words[k]);
            }
            Console.WriteLine();
            // Разбивка текста на подстроки: 
            words = txt.Split('у', 'и');
            // Отображение подстрок:
            for (int k = 0; k < words.Length; k++) {
                Console.WriteLine((k + 1) + ": " + words[k]);
            }
            Console.WriteLine();
            // Разбивка текста на подстроки:
            words = txt.Split(new char[]{'у', 'и'}, 3);
            // Отображение подстрок:
            for (int k = 0; k < words.Length; k++) {
                Console.WriteLine((k + 1) + ": " + words[k]);
            }
            // Переменная для символьного массива: 
            char[] symbs;
            // Массив из символов, формирующих текст: 
            symbs = txt.ToCharArray();
            // Отображение символов из массива:
            for(int k = 0; k < symbs.Length; k++) {
                Console.Write(symbs[k] + " ");
            }
            Console.WriteLine();
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

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


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

    В программе для выполнения операций с текстом объявляется текстовая переменная txt со значением "Дорогу осилит идущий". Данное текстовое значение отображается в консольном окне. Мы используем еще одну текстовую переменную str, значение которой присваивается командой

  str = txt.ToUpper();    . 
В результате переменной str присваивается текст "ДОРОГУ ОСИЛИТ ИДУЩИЙ", в котором все буквы в верхнем регистре (большие). После выполнения команды
  str=txt.ToLower(); 
переменная str получает значением текст "дорогу осилит идущий", состоящий из строчных (маленьких) букв.

    Затем в программе объявляется переменная words для текстового одномерного массива. При выполнении команды

  words = txt.Split(); 
текстовая строка, на которую ссылается переменная txt, разбивается на подстроки. Создается текстовый массив, количество элементов которого определяется количеством подстрок, на которые разбивается исходный текст. Подстроки становятся элементами массива. Ссылка на массив записывается в переменную words. Поскольку метод Split() вызывается без аргументов, то разделителем при разбивке текста на подстроки является пробел. При этом сами пробелы в подстроки не включаются. С помощью конструкции цикла каждая подстрока отображается в отдельной строке в консольном окне. Еще один пример разбивки текста на строки дается командой
  words = txt.Split('у', 'и');     . 
В этом случае исходный текст, на который ссылается переменная txt, разбивается на подстроки, и индикатором для разбивки на подстроки являются символы 'у' и 'и' (сами эти символы в подстроки не включены). Подстроки формируют текстовый массив, ссылка на который записывается в переменную words. Подстроки отображаются в консоли (некоторые подстроки содержат но одной букве).

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

  words = txt.Split(new char[]{'у', 'и'}, 3);
исходный текст разбивается на подстроки, разделителями являются символы 'у' и 'и', но количество подстрок не превышает значение 3. То есть текст разбивается на подстроки, но как только их становится 3, то дальше текст на подстроки не разбивается.


Первым аргументом методу Split() передается анонимный символьный массив, который создается инструкцией new char[]{'у', 'и'}.

    В программе объявляется переменная символьного массива symbs. Командой

  symbs = txt.ToCharArray();
на основе текста txt создается символьный массив, и ссылка на него записывается в переменную symbs. Массив состоит из букв текста, на который ссылается переменная txt. Элементы массива отображаются в консольном окне через пробел.


При всех перечисленных выше операциях текст, на который ссылается переменная txt, не меняется.


Если метод ToCharArray() создает символьный массив, то метод СоруТо() позволяет скопировать текстовое значение посимвольно в уже существующий массив. Метод статический (вызывается из класса String) и не возвращает результат. Аргументами методу передаются:

    На следующем шаге мы рассмотрим метод ToString().




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