Тема: Строковые переменные




Лабораторная работа №7

 

Для хранения строк в языке C# используется тип string. Чтобы

объявить (и, как правило, сразу инициализировать) строковую перемен-

ную, можно написать следующий код:

string a = "Текст";

string b = "строки";

Над строками можно выполнять операцию сложения – в этом случае текст одной строки будет добавлен к тексту другой:

string c = a + " " + b; // Результат: Текст строки

Тип string на самом деле является псевдонимом для класса String,

с помощью которого над строками можно выполнять ряд более сложных операций.

Например, метод IndexOf может осуществлять поиск

подстроки в строке, а метод Substring возвращает часть строки указанной длины, начиная с указанной позиции:

string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int index = a.IndexOf("OP"); // Результат: 14 (счет с 0)

string b = a.Substring(3, 5); // Результат: DEFGH

 

Если требуется добавить в строку специальные символы, это можно сделать с помощью escape-последовательностей, начинающихся

с обратного слэша:

· \" – Кавычка.

· \\ – Обратная косая черта.

· \n – Новая строка.

· \r – Возврат каретки.

· \t – Горизонтальная табуляция.

Строки типа string представляют собой неизменяемые объекты:

после того, как строка инициализирована, изменить ее уже нельзя. Рассмотрим для примера следующий код:

string s = "Hello, ";

s += "world!";

 

Здесь компилятор создает в памяти строковый объект и инициализирует его строкой «Hello, », а затем создает другой строковый объект

и инициализирует его значением первого объекта и новой строкой

«world!», а затем заменяет значение переменной s на новый объект.

В результате строка s содержит именно то, что хотел программист, однако в памяти остается и изначальный объект со строкой «Hello, ». Конечно, со временем сборщик мусора уничтожит этот бесхозный объект,

однако если в программе идет интенсивная работа со строками, то таких

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

Чтобы компилятор не создавал каждый раз новый строковый объект, разработчики языка C# ввели другой строковый класс:

StringBuilder. Приведенный выше пример с использованием этого

класса будет выглядеть следующим образом:

StringBuilder s = new StringBuilder("Hello, ");

s.Append("world!");

Конечно, визуально этот код выглядит более сложным, зато при активном использовании строк в программе он будет гораздо эффективнее. Помимо добавления строки к существующему объекту (Append)

класс StringBuilder имеет еще ряд полезных методов:

· Insert: вставляет указанный текст в нужную позицию исходной

строки

· Remove: удаляет часть строки

· Replace: заменяет указанный текст в строке на другой.

Если нужно преобразовать объект StringBuilder в обычную строку, то для этого можно использовать метод ToString():

StringBuilder s = new StringBuilder("Яблоко");

string a = s.ToString();

Элемент управления ListBox представляет собой список, элементы

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

свои свойства и свои методы. Методы Add, RemoveAt и Insert используются для добавления, удаления и вставки элементов.

Объект Items хранит объекты, находящиеся в списке. Объект может

быть любым классом – данные класса преобразуются для отображения

в строковое представление методом ToString(). В нашем случае в качестве объекта будут выступать строки. Однако, поскольку объект Items хранит объекты, приведенные к типу object, перед использованием необходимо привести их обратно к изначальному типу, в нашем случае string:

string a = (string)listBox1.Items[0];

Для определения номера выделенного элемента используется свойство SelectedIndex.

6.4. Порядок выполнения индивидуального задания

З а д а н и е: Написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк использовать ListBox. Строки вводятся на этапе проектирования формы, используя окно свойств. Вывод результата организовать в метку Label.

Панель диалога будет иметь вид:

Текст обработчика нажатия кнопки «Пуск» приведен ниже.

private void button1_Click(object sender, EventArgs e)

{

// Получаем номер выделенной строки

int index = listBox1.SelectedIndex;

// Считываем строку в переменную str

string str = (string)listBox1.Items[index];

// Узнаем количество символов в строке

int len = str.Length;

// Считаем, что количество пробелов равно 0

int count = 0;

// Устанавливаем счетчик символов в 0

int i = 0;

// Организуем цикл перебора всех символов в строке

while (i < len)

{

// Если нашли пробел, то увеличиваем

// счетчик пробелов на 1

if (str[i] == ' ')

count++;

i++;

}

label1.Text = "Количество пробелов = " +

count.ToString();

}

 

Задание:

Во всех заданиях исходные данные вводить с помощью ListBox.

Строки вводятся на этапе проектирования формы, используя окно

свойств. Вывод результата организовать в метку Label.

1. Дана строка, состоящая из групп нулей и единиц. Посчитать

количество нулей и единиц.

2. Посчитать в строке количество слов.

3. Найти количество знаков препинания в исходной строке.

4. Дана строка символов. Вывести на экран цифры, содержащиеся

в строке.

5. Дана строка символов. Сформировать новую строку, в которую

включить все символы исходной строки, стоящие на четных местах.

При этом должен быть обратный порядок следования символов по от-

ношения к исходной строке.

6. Сформировать и вывести две новых строки на основе входной

строки символов. В первую строку включить все символы, стоящие

на четных местах, во вторую – символы, стоящие на нечетных местах

в исходной строке.

7. Дана строка символов, состоящая из произвольных десятич-

ных цифр, разделенных пробелами. Вывести количество четных чисел

в этой строке.

8. Дана строка символов. Вывести на экран количество строчных

русских букв, входящих в эту строку.

9. Сформировать и вывести три новых строки на основе входной

строки символов. В первую строку включить все цифры, во вторую –

все знаки препинания: точки, запятые, двоеточия, точки с запятой, вос-

клицательные и вопросительные знаки, в третью строку – все остальные

символы. Например, входная строка содержит: «выходные дни: 1, 2 ян-

варя, 8 марта, 1 мая, 9 мая!», после обработки первая строка будет со-

держать: «12819», вторая строка: «:,,,!», третья строка: «выходные дни

января марта мая мая».

10. Дана строка символов. Вывести на экран только строчные русские буквы, входящие в эту строку.

11. Дана строка символов, состоящая из произвольного текста на

английском языке, слова разделены пробелами. В каждом слове заме-

нить первую букву на прописную.

12. Дана строка символов, состоящая из произвольного текста

на английском языке, слова разделены пробелами. Удалить первую бук-

ву в каждом слове.

13. Дана строка символов, состоящая из произвольного текста

на английском языке, слова разделены пробелами. Поменять местами i-

и j-ю буквы. Для ввода i и j на форме добавить свои поля ввода.

14. Дана строка символов, состоящая из произвольного текста на

английском языке, слова разделены пробелами. Заменить все буквы ла-

тинского алфавита на знак «+».

15. Дана строка символов, содержащая некоторый текст на рус-

ском языке. Заменить все большие буквы «А» на символ «*».

16. Дана строка символов, содержащая некоторый текст. Разрабо-

тать программу, которая определяет, является ли данный текст палин-

дромом, т. е. читается ли он слева направо так же, как и справа налево

(например, «А роза упала на лапу Азора»).

17. Дана строка символов, состоящая из произвольного текста

на английском языке, слова разделены пробелами. Сформировать новую

строку, состоящую из чисел длин слов в исходной строке.

18. Дана строка символов, состоящая из произвольного текста

на английском языке, слова разделены пробелами. Поменять местами

первую и последнюю буквы каждого слова.

19. Поменять местами первое и второе слово в исходной строке.

20. Сформировать новую строку, где поменять местами первое

и последнее слово из исходной строки.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: