2

Операции над строковым значением с помощью цикла. Синтаксис C#

Самой распространенной операцией над строковым значением является поиск. Поиск может осуществляется как одного элемента, так и цепочки из элементов. К примеру, зная, что инструкция в программном коде заканчивается на знак «;», можно подсчитать количество инструкций даже если некоторые из них написаны в одну строку. Поиск, цепочек из элементов, позволяют определить стратегию продажи товара. Для этого, в отзывах ищут цепочки из символов «хорошо» или «плохо».

Для таких операций, как это не банально звучит, необходимо получить доступ к массиву элементов значения.

Давайте вспомним, что для доступа к элементу значения строкового типа используется конструкция — имя переменной [индекс элемента], где индекс элемента — целое число, изменяя который, можно получить доступ к любому элементу значения.

Изменение номера индекса — повторяющаяся задача, поэтому применим для этой операции операцию повторения.

Для написания цикла, нам необходимо знать начальное, конечное значение цикла, а также изменение начального значения.

  1. Так как нумерация индексов начинается с нуля, то и начальное значение будет начинаться с нуля.

  2. Конечное значение определим с помощью свойства— Length.Свойство — Length. Свойства, так же, как и методы, вызываются через точку после имени, с той разницей, что в формате вызова метода используются круглые скобки после имени метода, а формат свойства их не использует.

static void Main(string[] args)

{

string text = "Hello!";

int sizeText =  text.Length;

Console.WriteLine($"Размер значения: {sizeText} символов");

}

  1. Изменение значения будем осуществлять по нижеприведенному алгоритму:

  • Представим индекс элемента в виде переменной

  • В цикле будем изменять значение переменной. Изменяя значение переменной, каждую итерацию, в конструкции — имя переменной [индекс элемента], вместо индекса элемента будет подставляться новое значение.

    Напишем программу вывода элементов через пробел переменной text.

    static void Main(string[] args)

    {

    string text = "Hello!";

    for(int i=0; i < text.Length; i++)

    {

    Console.Write(text[i] + " ");

    }

    }

    Здесь,

    1. Внесено изменение в конструкцию — имя переменной [индекс элемента] и представляет собой следующий вид  — text[i].

    2. Изменяясь каждую итерацию, переменная «i» будет принимать значение от нуля до пяти. При первой итерации, конструкция text [i], получит от переменной « i » значение в виде числа « 0 » и метод вывода примет следующий вид Console.Write(text[0] + " "); а при последней — Console.Write(text[5] + ","). 


    Выведем на экран символы значение из предыдущей программы в обратном порядке


    static void Main(string[] args)

    {

    string text = "Hello!";

    for (int i = text.Length; i > 0; i--)

    {

    Console.Write(text[i] + " ");

    }

    }

    При запуске программы произойдет ошибка, указывающая на обращении к несуществующему индексу.

Операции над строковым значением с помощью цикла. Синтаксис C# Введение, Основы, Учебные курсы, Длиннопост

Все дело в свойстве Length. Вернее, в том, что, нумерация индексов начинается с нуля и последний индекс значения будет — пять, а нумерация в свойстве Length, начинается с единицы и заканчивается числом шесть. Так как, начальным значением счетчика установлено значение от свойства Length, то произошло обращение к несуществующему индексу с номером шесть, что и привело к ошибке.

Исправить ошибку достаточно легко. Достаточно уменьшить значение свойства Length на единицу. Еще одной ошибкой в данном коде является конечное значение счетчика определенное операцией «i > 0». Здесь «i» не достигнет числа « 0 » и элемент с таким индексом не будет задействован в цикле.

Исправим обе ошибки

static void Main(string[] args)

{

string text = "Hello!";

for (int i = text.Length - 1; i >= 0; i--)

{

Console.Write(text[i] + " ");

}

}

При написании цикла для обработки всех элементов строкового значения необходимо обратить пристальное внимание на соответствие числового ряда индексов и чисел используемых в счетчике итераций.

Практический пример для подсчета предложений

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

static void Main(string[] args)

{

string text = "Эрнест Хемингуэй! Старик и море. Жанр. Роман?";

int count = 0;

int i = 0;

while (i < text.Length)

{

if ((text[i] == '.') || (text[i] == '!') || (text[i] == '?'))

{

count++;

}

i++;

}

Console.WriteLine("Количество предложений: " + count);

}

Здесь переменная «i» не только считает количество итераций, но и изменяет каждую итерацию индекс массива символов. Таким образом в цикле просматриваются все символы от первого до последнего. В случае совпадения символа значения с символом сравнения, информация об этом записывается в переменную count.

В заключении.

Для обработки нескольких элементов строкового значения используйте конструкции повторения — циклы. При написании кода обращайте внимание на соответствие диапазона числового ряда подменяемых числовой переменой индексов элементов. Несоответствие диапазонов вызовут либо ошибку, либо не все элементы будут задействованы в обработке.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!