Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные / Лаб.раб.3С#.doc
Скачиваний:
88
Добавлен:
21.03.2015
Размер:
159.23 Кб
Скачать

Операции над строками

Над строками этого класса определены практически те же операции с той же семантикой, что и над строками класса 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.

  1. Текстовые сообщения часто печатаются строчными буквами, но многие сотовые телефоны имеют встроенные средства преобразования строчной буквы в прописную после символа пунктуации, как точка или знак вопроса. Составить программу, которая будет вводить сообщение в переменную string(на одной строке), а затем обрабатывать его с получением новой строки с прописными буквами в соответствующих местах.

  2. Компания учитывает расходы своих служащих в долларах. После поездки они могут представить свои расходы в одной из следующих валют:

  • Фунтах стерлингов (£2050);

  • Евро (€5196);

  • Канадские доллары (C$4987);

  • Доллары США ($5000);

  • Йены (¥2000);

  • Шведские кроны (7000kr).

Составить программу, которая читает статьи расходов и переводит в доллары США.

  1. Составить программу, которая будет вводить строку в переменную string. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран.

  2. Составить программу, которая будет вводить строку в переменную string. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

  3. Составить программу, которая будет вводить строку в переменную string. Определить, сколько раз в строке встречается заданное слово.

  4. Строка, содержащая произвольный русский текст, состоит не более чем из 200 символов. Написать, какие буквы и сколько раз встречаются в этом тексте. Ответ должен приводиться в грамматически правильной форме: например: а — 25 раз, к — 3 раза и т.д.

  5. Двумерный массив nxmсодержит некоторые буквы русского алфавита, расположенные в произвольном порядке. Написать программу, проверяющую, можно ли из этих букв составить данное словоS. Каждая буква массива используется не более одного раза.

  6. Дана строка, содержащая текст и арифметические выражения вида a®b, где ® — один из знаков +, -, *, /. Выписать все арифметические выражения и вычислить их значения.

  7. Составить программу, которая будет вводить строку в переменную string. Удалить из нее все лишние пробелы, оставив между словами не более одного. Результат поместить в новую строку.

  8. Составить программу, которая будет вводить строку в переменную string. Напечатать в алфавитном порядке все слова из данной строки, имеющие заданную длинуn.

  9. Составить программу, которая будет вводить строку в переменную string. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет.

  10. Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или знаком восклицания). Получить в новой строке отредактированный текст, в котором удалены подряд идущие вхождения слов в предложениях.

  11. Даны две строки А и B. Составьте программу, проверяющую, можно ли из букв, входящих в А, составить В (буквы можно использовать не более одного раза и можно переставлять).

Например, А: ИНТЕГРАЛ; В: АГЕНТ — составить можно; В: ГРАФ —нельзя.

  1. Дана строка, содержащая текст на русском языке. Заменить все вхождения заданного слова на другое слово.

  1. Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

  1. С клавиатуры вводится предложение, слова в котором разделены символом ‘_’. Напечатать все предложения, которые получаются путем перестановки слов исходного текста.

  2. Дана строка, содержащая текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или знаком восклицания). Отредактировать текст, удалив подряд идущие вхождения слов в предложениях.

  3. Дана строка, содержащая зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заменяется на а). Получить новую расшифрованную строку.

  4. Даны две строки f1 иf2- Строкаf1 содержит произвольный текст. Слова в тексте разделены пробелами и знаками препинания. Строкаf2 содержит не более 30 слов, которые разделены запятыми. Эти слова образуют пары: каждое второе является синонимом первого. Заменить в строкеf1 те слова, которые можно, их синонимами. Результат поместить в новую строку.

  5. В записке слова зашифрованы – каждое из них написано наоборот. Написать программу расшифровки текста.

  6. Зашифровать введенный текст, написав каждое слово наоборот.

  7. Cклавиатуры вводится предложение, слова в котором разделены символом ‘_’ и маска (шаблон) для выбора из предложения нужных слов (содержит буквы и символ заполнителя *, который заменяет любое количество символов). Необходимо выбрать из предложения слова, которые подходят под маску (шаблон). Например:

ВЫРАЖЕНИЕ_ЕСТЬ_ПРАВИЛО

Маска *Н*Е ВЫРАЖЕНИЕ

*РА* ВЫРАЖЕНИЕ, ПРАВИЛО

  1. Cклавиатуры вводится предложение, слова в котором разделены символом ‘_’. Используя треугольник Паскаля зашифруйте исходное предложение по правилу:

  • Из предложения выделяется слово;

  • Из треугольника Паскаля выбирается строка с номером равным числу букв в слове;

  • К-я буква исходного слова заменяется на букву, отстоящую от исходной на число букв, указанное в к-м столбце выбранной строки треугольника.

1 А Б В Г Д Е Ж З

1 1 Я И

1 2 1 Ю Й

1 3 3 1 Э К

1 4 6 4 1 Ь Л

Ы М

Ъ Н

Щ О

Ш П

Ч Ц Х Ф У Т С Р

  1. Проверить является ли данное предложение зашифрованным по описанному выше алгоритму. Если да – выдать расшифрованную строку, если нет - выдать сообщение об ошибке.

Б_ССКБ_ФУЖПБ_ОБ_МГТФ_БЛФФБ

  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 в слово на русском языке.

  1. Зашифруйте вводимое с клавиатуры предложение следующим образом: сначала выбираются 2 слова из базы (набор слов, находящихся в тексте программы или вводимых с клавиатуры), затем слово из предложения, затем опять 2 слова из базы, после чего слово из предложения и так далее.

  2. С клавиатуры вводятся 4 массива слов:

- существительные в именительном падеже (тормоз, дисковод)

- глаголы (ест, сажает)

- качественные прилагательные во множественном числе (ядовитые, прекрасные)

- существительные в винительном падеже множ. числа (колонки, заборы).

Выбрать случайным образом слова из массивов и составить предложения.

ТОРМОЗ ЕСТ ПРЕКРАСНЫЕ ЗАБОРЫ.

Соседние файлы в папке лабораторные