Главная » Просмотр файлов » 1629295403-b876e2087bddebea4bc9666fb2377a02

1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 40

Файл №846199 1629295403-b876e2087bddebea4bc9666fb2377a02 (С для чайников) 40 страница1629295403-b876e2087bddebea4bc9666fb2377a02 (846199) страница 402021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 40)

W r i t e L i n e ( " И м я ' {0} ' п о с л е о б р а б о т к и " , s) ;}II Ожидаем подтверждения пользователяConsole.WriteLine("Нажмите <Enter> для " +"завершения программы. . . " ) . ;Console.Read();}Глава 9. Работа со строками в С#213// TrimAndPad - для данного массива строк удаляются// пробелы с обоих сторон строки, после чего выполняется// дополнение пробелов таким образом, чтобы все строки// о к а з а л и с ь в ы р о в н е н ы с н а и б о л ь ш е й с т р о к о й в м а с с и в еp u b l i c s t a t i c string[] T r i m A n d P a d ( s t r i n g [] strings){// К о п и р у е м и с х о д н ы й м а с с и в в м а с с и в , с к о т о р ы м будем// работатьstring[] stringsToAlign = new String[strings.Length];////Удаляем ненужныестрокиf o r ( i n t i = 0;пробелысобоихсторонi < stringsToAlign.Length;каждойi++){stringsToAlign[i]= strings[i].Trim();}// Находим наибольшую длинуi n t n M a x L e n g t h = 0;foreach(stringsinстрокивмассивеstringsToAlign){if(s.Length> nMaxLength){nMaxLength=s.Length;}}//Выравниваемf o r ( i n t i = 0;всестрокикдлинесамой длиннойi < stringsToAlign.Length;i++){stringsToAlign[i] =stringsToAlign[i].PadRight(nMaxLength + 1 ) ;}// Возвращаем результатreturn stringsToAlign;}}вызывающейфункции}Демонстрационная программа A l i g n O u t p u t определяет массив имен, которые шеиразные выравнивание и длину (вы можете переписать программу так, чтобы эти имена счипвались с клавиатуры или из файла).

Функция M a i n () сначала выводит эти имена на экрантом виде, в котором они получены программой. Затем вызывается функция TrimAndPadсущественно улучшающая внешний вид выводимых программой строк:Имена имеют разную длинуИмя 'Christa' до о б р а б о т к иИмя 'S a r a h ' до обработкиИмя 'Jonathan' до обработкиИ м я 'Sam' д о о б р а б о т к и1Имя ' Schmekowitzдо о б р а б о т к и214ЧастьIII.Объектно-основанноепрограммировяТe же и м е н а в ы р о в н е н ы и и м е ю т о д и н а к о в у ю д л и н уимя 'Christa' после обработкиВия 'Sarah' после обработкиta 'Jonathan' после обработкиИмя 'Sam' после обработкиИмя 'Schmekowitz ' п о с л е о б р а б о т к иНажмите < E n t e r > д л я з а в е р ш е н и я п р о г р а м м ы .

. .Метод T r i m A n d P a d ()начинает ссозданиякопиипереданногоему массиваstrings. В общем случае функция, работающая с переданными ей аргументами, долж­на вернуть новые модифицированные значения, а не изменять переданные ей.TrimAndPad () начинается с цикла, вызывающего T r i m () для каждого элементамассива, чтобы удалить лишние пробельные символы с обоих концов строки.

Затем вы­полняется второй цикл, в котором происходит поиск самого длинного элемента массива.И наконец, в последнем цикле для элементов массива вызывается метод P a d R i g h t ( ) ,удлиняющий строки, делая их равными по длине.Метод P a d R i g h t (10) увеличивает строку так, чтобы ее длина была как минимум10 символов.Например,если длина исходной строки — 6символов,тометодPadRight (10) добавит к ней справа еще 4 пробела.Метод T r i m A n d P a d () возвращает массив выровненных строк для вывода. Функцияlain () проходит по полученному списку строк, выводя их на экран. Вот и все.Использование функции конкатенацииЗачастую программисты сталкиваются с задачей разбивки строки или вставки некоторой подстроки в середину другой строки.

Заменить один символ другим проще всего(помощью метода R e p l a c e ():string s = " D a n g e r N o S m o k i n g " ;а.Replace (s, ' ' , ' ! ' )Этотфрагмент исходноготекста преобразует начальнуюстроку в"Danger!NoSmoking".Замена всех вхождений одного символа (в данном случае — пробела) другим(восклицательным знаком) особенно полезна при генерации списка элементов, разделен­ии запятыми для упрощения разбора. Однако более распространенный и сложный слу­чай включает разбиение единой строки на подстроки, отдельную работу с каждой под­строкой с последующим объединением их в единую модифицированную строку.Рассмотрим, например, функцию R e m o v e S p e c i a l C h a r s ( ) , которая уда­ляет все встречающиеся специальные символы из передаваемой ей строки.Демонстрационная программа R e m o v e W i t h S p a c e использует функциюR e m o v e S p e c i a l C h a r s () для удаления из строки пробельных символов(пробелов, табуляций и символов новой строки).// RemoveWhiteSpaceопределениефункции// RemoveSpecialChars () ,котораяможетудалятьиз//передаваемой е й с т р о к и п р о и з в о л ь н ы й п р е д о п р е д е л е н н ы й// набор с и м в о л о в .

В д а н н о й д е м о н с т р а ц и о н н о й п р о г р а м м е/ / функцияиспользуетсядляудаленияизтестовойстроки//пробельныхсимволовnamespace R e m o v e W h i t e S p a c eвсех'та 9. Работа со строками в С#215*usingSystem;publicclassProgram{publicstatic void Main(string[]args){// Определение множества пробельных символовc h a r t ] c W h i t e S p a c e = {' ', ' \ n ' , ' \ t ' } ;// Начинаем работу со строкой, в которой имеются// пробельные символыs t r i n g s = " t h i s is a \ n s t r i n g " ;Console.WriteLine("До:" + s ) ;// Выводим строку с удаленными пробельными символамиConsole.WriteLine("После : " +RemoveSpecialChars(s, cWhiteSpace))// Ожидаем подтверждения пользователяConsole.WriteLine("Нажмите <Enter> для " +" з а в е р ш е н и я п р о г р а м м ы . .

. ") ;Console.Read();}// R e m o v e S p e c i a l C h a r s - у д а л я е т из строки все указанные// символыpublic static string RemoveSpecialChars(string slnput,c h a r t ] cTargets){// В sOutput будет содержатьсяstring sOutput = slnput;// Начинаем поиск пробельныхfor(;;)возвращаемаястрокасимволов{// Ищем позиции искомых символов; если таковых в// строке больше нет — выходим из циклаint n O f f s e t = s O u t p u t .

I n d e x O f A n y ( c T a r g e t s ) ;if ( n O f f s e t-1){break;}// Разбиваем строку на две части — до найденного// с и м в о л а и п о с л е н е г оstring sBefore = sOutput.Substring(0, n O f f s e t ) ;string sAfter= sOutput.Substring(nOffset + 1 ) ;// и объединяем эти части, но уже без найденного// символаsOutput = String.Concat(sBefore, s A f t e r ) ;216Часть III.Объектно-основанное программировавIГлавreturnsOutput;Ключевой в этой демонстрационной программе является функция R e m o v e S p e c i a l ­Chars ( ) . Она возвращает строку, которая представляет собой исходную строку, но судаленными вхождениями всех символов, содержащихся в массиве c T a r g e t s . Чтобылучше понять эту функцию, представьте, что ей передана строка " a b , c d , е " , а массивспециальных символов содержит единственный символ ' ,1.Функция R e m o v e S p e c i a l C h a r s () начинается с входа в цикл, выход из которогопроизойдет только тогда, когда в строке не останется ни одной запятой.

Функция 1пdexOf Any () возвращает позицию первой найденной запятой (значение -1 указывает,то ни одна запятая не найдена).После первого вызова I n d e x O f A n y () возвращает 2 (позиция111а равна 0, позицияb — 1, а позиция ' , ' — 2). Два следующих вызова функции разбивают строку на двеподстроки в указанном месте. Вызов S u b s t r i n g (0, 2) создает подстроку, содержа­щую два символа,начинаяс символа в позиции 0,т.е."ab".ВторойвызовSubstring (3) создает подстроку из символов с позиции 3 исходной строки и до ееюнца, т.е.

" c d , e " (+1 в вызове позволяет пропустить найденную запятую). Затемфункция Concat () объединяет эти подстроки вместе, создавая строку " a b e d , е".Управление выполнением передается после этого в начало цикла. Очередная итераднл находит запятую в позиции 4, так что в результате получается строка " a b e d e " . По­скольку в ней нет ни одной запятой, возвращаемая при последнем проходе позиция равиа-1.Демонстрационная программа сначала выводит строку, содержащую пробельныесиволы, затем использует функцию R e m o v e S p e c i a l C h a r s () для их удаления и вы­водит получившуюся в результате строку:|о: this is аWringПосле :thisisastringЗажмите <Enter> д л я з а в е р ш е н и я п р о г р а м м ы .

. .Использование ф у н к ц и и SplitQВ программе R e m o v e W h i t e S p a c e было продемонстрировано применениеметодов C o n c a t ( ) и I n d e x O f ( ) ; однако использованный способ решенияпоставленной задачи не самый эффективный. Стоит только немного поду­мать, и можно получить существенно более эффективную функцию с ис­пользованием уже знакомой функции S p l i t О. Соответствующая про­граммаимеетсянаприлагаемомкомпакт-дискевкаталогеRemove-W h i t e S p a c e W i t h S p l i t . Вот код функции R e m o v e S p e c i a l C h a r s () изэтой программы.// RemoveSpecialChars - у д а л я е т из с т р о к и в с е у к а з а н н ы е// символыr a b l i c static s t r i n g R e m o v e S p e c i a l C h a r s ( s t r i n g s l n p u t ,char[] cTargets)ированиеtoa ft Работа со строками в С#217// Разбиваем входную строку с использованием указанных// символов в качестве р а з д е л и т е л е йstring[] sSubStrings = s l n p u t .

S p l i t ( c T a r g e t s ) ;// В sOutput будет содержатьсяstring sOutput = "";// Цикл по всем подстрокамforeach(string substring inвозвращаемаястрокаsSubStrings){sOutput=String.Concat(sOutput,substring);}returnsOutput;}В этой версии для разбиения входной строки на множество подстрок используфункция S p l i t ()с удаляемыми символами в качестве символов-разделителей,скольку разделители не включаются в подстроки, создается эффект их удаления,логика гораздо проще и менее подвержена ошибкам при реализации.Цикл f o r e a c h в этой версии функции собирает части строки в единое целое. Впрограммы остается неизменным.Класс S t r i n g предоставляет в распоряжение программиста метод Format О]форматирования вывода, в основном — чисел.

Характеристики

Тип файла
PDF-файл
Размер
14,75 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6361
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее