
- •Лабораторная работа № 3 Тема: Строки в с#
- •Теоретические сведения
- •Класс char
- •Класс char[] - массив символов
- •Программа №2
- •} Класс String
- •Операции над строками
- •Строковые константы
- •Неизменяемый класс String
- •Метод Format
- •Динамические методы класса String
- •Класс StringBuilder - построитель строк
- •Операции над строками
- •Основные методы
- •Содержание отчета
Операции над строками
Над строками этого класса определены практически те же операции с той же семантикой, что и над строками класса String:
присваивание (=);
две операции проверки эквивалентности (= =) и (!=);
взятие индекса ([]).
Операция конкатенации (+) не определена над строками класса StringBuilder, ее роль играет метод Append, дописывающий новую строку в хвост уже существующей.
Со строкой этого класса можно работать как с массивом, но, в отличие от класса String, здесь уже все делается как надо: допускается не только чтение отдельного символа, но и его изменение.
public void TestStringBuilder(){ //Строки класса StringBuilder
//операции над строками
StringBuilder s1 =new StringBuilder("ABC"),
s2 =new StringBuilder("CDE");
StringBuilder s3 = new StringBuilder();
s3= s1.Append(s2);
bool b1 = (s1==s3);
char ch1 = s1[0], ch2=s2[0];
Console.WriteLine("s1={0}, s2={1}, b1={2}," + "ch1={3}, ch2={4}", s1,s2,b1,ch1,ch2);
s2 = s1;
b1 = (s1!=s2);
ch2 = s2[0];
Console.WriteLine("s1={0}, s2={1}, b1={2}," +"ch1={3}, ch2={4}", s1,s2,b1,ch1,ch2);
StringBuilder s = new StringBuilder("Zenon");
s[0]='L';
Console.WriteLine(s);
}
Для того чтобы имя класса StringBuilder стало доступным, в проект должно быть добавлено предложение using System.Text, ссылающееся на соответствующее пространство имен.
Основные методы
У класса StringBuilder методов значительно меньше, чем у класса String. Это и понятно - класс создавался с целью дать возможность изменять значение строки. По этой причине у класса есть основные методы, позволяющие выполнять такие операции над строкой как вставка, удаление и замена подстрок, но нет методов, подобных поиску вхождения, которые можно выполнять над обычными строками. Технология работы обычно такова: конструируется строка класса StringBuilder; выполняются операции, требующие изменение значения; полученная строка преобразуется в строку класса String; над этой строкой выполняются операции, не требующие изменения значения строки.
Основные методы класса StringBuilder:
public StringBuilder Append (<объект>).К строке, вызвавшей метод, присоединяется строка, полученная из объекта, который передан методу в качестве параметра. Метод перегружен и может принимать на входе объекты всех простых типов, начиная от char и bool до string и long. Поскольку объекты всех этих типов имеют метод ToString, всегда есть возможность преобразовать объект в строку, которая и присоединяется к исходной строке. В качестве результата возвращается ссылка на объект, вызвавший метод.
public StringBuilder Insert (int location,<объект>). Метод вставляет строку, полученную из объекта, в позицию, указанную параметромlocation. Метод Append является частным случаем метода Insert.
public StringBuilder Remove (int start, int len). Метод удаляет подстроку длины len, начинающуюся с позиции start.
public StringBuilder Replace (string str1,string str2). Все вхождения подстроки str1 заменяются на строку str2.
public StringBuilder AppendFormat (<строка форматов>, <объекты>). Метод является комбинацией метода Format класса String и метода Append. Строка форматов, переданная методу, содержит только спецификации форматов. В соответствии с этими спецификациями находятся и форматируются объекты. Полученные в результате форматирования строки присоединяются в конец исходной строки.
За исключением метода Remove, все рассмотренные методы являются перегруженными.
Индивидуальные задания
Проверить работу программ 1, 2 и записать результаты программы в отчет .
Выбрать задания по номеру варианта и № +14.
Текстовые сообщения часто печатаются строчными буквами, но многие сотовые телефоны имеют встроенные средства преобразования строчной буквы в прописную после символа пунктуации, как точка или знак вопроса. Составить программу, которая будет вводить сообщение в переменную string(на одной строке), а затем обрабатывать его с получением новой строки с прописными буквами в соответствующих местах.
Компания учитывает расходы своих служащих в долларах. После поездки они могут представить свои расходы в одной из следующих валют:
Фунтах стерлингов (£2050);
Евро (€5196);
Канадские доллары (C$4987);
Доллары США ($5000);
Йены (¥2000);
Шведские кроны (7000kr).
Составить программу, которая читает статьи расходов и переводит в доллары США.
Составить программу, которая будет вводить строку в переменную string. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран.
Составить программу, которая будет вводить строку в переменную string. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.
Составить программу, которая будет вводить строку в переменную string. Определить, сколько раз в строке встречается заданное слово.
Строка, содержащая произвольный русский текст, состоит не более чем из 200 символов. Написать, какие буквы и сколько раз встречаются в этом тексте. Ответ должен приводиться в грамматически правильной форме: например: а — 25 раз, к — 3 раза и т.д.
Двумерный массив nxmсодержит некоторые буквы русского алфавита, расположенные в произвольном порядке. Написать программу, проверяющую, можно ли из этих букв составить данное словоS. Каждая буква массива используется не более одного раза.
Дана строка, содержащая текст и арифметические выражения вида a®b, где ® — один из знаков +, -, *, /. Выписать все арифметические выражения и вычислить их значения.
Составить программу, которая будет вводить строку в переменную string. Удалить из нее все лишние пробелы, оставив между словами не более одного. Результат поместить в новую строку.
Составить программу, которая будет вводить строку в переменную string. Напечатать в алфавитном порядке все слова из данной строки, имеющие заданную длинуn.
Составить программу, которая будет вводить строку в переменную string. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет.
Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или знаком восклицания). Получить в новой строке отредактированный текст, в котором удалены подряд идущие вхождения слов в предложениях.
Даны две строки А и B. Составьте программу, проверяющую, можно ли из букв, входящих в А, составить В (буквы можно использовать не более одного раза и можно переставлять).
Например, А: ИНТЕГРАЛ; В: АГЕНТ — составить можно; В: ГРАФ —нельзя.
Дана строка, содержащая текст на русском языке. Заменить все вхождения заданного слова на другое слово.
Удалить часть символьной строки, заключенной в скобки (вместе со скобками).
С клавиатуры вводится предложение, слова в котором разделены символом ‘_’. Напечатать все предложения, которые получаются путем перестановки слов исходного текста.
Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или знаком восклицания). Отредактировать текст, удалив подряд идущие вхождения слов в предложениях.
Дана строка, содержащая зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новую расшифрованную строку.
Даны две строки f1 иf2- Строкаf1 содержит произвольный текст. Слова в тексте разделены пробелами и знаками препинания. Строкаf2 содержит не более 30 слов, которые разделены запятыми. Эти слова образуют пары: каждое второе является синонимом первого. Заменить в строкеf1 те слова, которые можно, их синонимами. Результат поместить в новую строку.
В записке слова зашифрованы – каждое из них написано наоборот. Написать программу расшифровки текста.
Зашифровать введенный текст, написав каждое слово наоборот.
Cклавиатуры вводится предложение, слова в котором разделены символом ‘_’ и маска (шаблон) для выбора из предложения нужных слов (содержит буквы и символ заполнителя *, который заменяет любое количество символов). Необходимо выбрать из предложения слова, которые подходят под маску (шаблон). Например:
ВЫРАЖЕНИЕ_ЕСТЬ_ПРАВИЛО
Маска *Н*Е ВЫРАЖЕНИЕ
*РА* ВЫРАЖЕНИЕ, ПРАВИЛО
Cклавиатуры вводится предложение, слова в котором разделены символом ‘_’. Используя треугольник Паскаля зашифруйте исходное предложение по правилу:
Из предложения выделяется слово;
Из треугольника Паскаля выбирается строка с номером равным числу букв в слове;
К-я буква исходного слова заменяется на букву, отстоящую от исходной на число букв, указанное в к-м столбце выбранной строки треугольника.
1 А Б В Г Д Е Ж З
1 1 Я И
1 2 1 Ю Й
1 3 3 1 Э К
1 4 6 4 1 Ь Л
Ы М
Ъ Н
Щ О
Ш П
Ч Ц Х Ф У Т С Р
Проверить является ли данное предложение зашифрованным по описанному выше алгоритму. Если да – выдать расшифрованную строку, если нет - выдать сообщение об ошибке.
Б_ССКБ_ФУЖПБ_ОБ_МГТФ_БЛФФБ
Выберите 10 произвольных букв русского алфавита. Введите произвольное слово. С помощью ключа длиной от 3 до 8 символов произведите шифровку слова в числовую комбинацию.
В Е Ж М Н О П Р С Т КЛЮЧ - 1234
0 1 2 3 4 5 6 7 8 9
МНОЖЕСТВО
3 4 5 2 1 8 9 0 5
1 2 3 4 1 2 3 4 1
4 6 9 5 2 0 3 3 6 - РЕЗУЛЬТАТ
26. Напишите дешифратор, преобразующий исходное слово, зашифрованное по принципу з.29 в слово на русском языке.
Зашифруйте вводимое с клавиатуры предложение следующим образом: сначала выбираются 2 слова из базы (набор слов, находящихся в тексте программы или вводимых с клавиатуры), затем слово из предложения, затем опять 2 слова из базы, после чего слово из предложения и так далее.
С клавиатуры вводятся 4 массива слов:
- существительные в именительном падеже (тормоз, дисковод)
- глаголы (ест, сажает)
- качественные прилагательные во множественном числе (ядовитые, прекрасные)
- существительные в винительном падеже множ. числа (колонки, заборы).
Выбрать случайным образом слова из массивов и составить предложения.
ТОРМОЗ ЕСТ ПРЕКРАСНЫЕ ЗАБОРЫ.