Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Создание объекта StringBuilder ⇐ ПредыдущаяСтр 2 из 2
Прежде чем начать работать со строкой типа StringBuilder, необходимо создать объект типа StringBuilder. Для этого существует несколько вариантов: 1)Пустая строка: StringBuilder sb = new StringBuilder(); 2)Строке можно задать начальную длину — здесь строке sb будет выделена память под n элементов: int n = 50; StringBuilder sb = new StringBuilder(n); Этот вариант есть смысл использовать в том случае, когда заранее известна необходимая длина строки. В остальных случаях проще использовать первый вариант. 3)Строка может получить начальное значение: StringBuilder sb = new StringBuilder("qwerty"); Консольный ввод-вывод Для ввода-вывода строки можно использовать методы ReadLine() и WriteLine() класса Console: StringBuilder sb = new StringBuilder(Console.ReadLine()); Console.WriteLine(sb); Обращение к отдельным элементам строки StringBuilder При работе со строкой типа StringBuilder можно непосредственно обращаться к отдельным элементам этой строки, можно их изменять, при этом память для строки заново не выделяется. Индексы в строке начинаются с 0, т.е. как в обычном массиве. Текущая длина строки хранится в свойстве Length. Пример. Инвертировать строку, заданную с клавиатуры. Вот фрагмент программы, которая реализует данную задачу: StringBuilder sb = new StringBuilder(Console.ReadLine()); char c; for (int i = 0, j = sb.Length - 1; i < j; i++, j--) { c = sb[i]; sb[i] = sb[j]; sb[j] = c; } Console.WriteLine(sb); Результат : Свойства и методы класса StringBuilder Этот класс имеет достаточно большое количество свойств и методов, аналогичных свойствам и методам для строк string, хотя, надо признать, что для класса StringBuilderих меньше, чем для типа string. Среди свойств необходимо отметить два наиболее важных: · Length — текущее количество символов, хранящихся в строке; · Capacity — максимальное количество символов, которое может храниться в объекте , т.е. для текущего объекта выделена память именно под это количество символов. Теперь рассмотрим наиболее употребительные методы класса StringBuilder. Обратите внимание на тот факт, что при вызове методов, например: Append(), Insert(),Remove(), Replace() для объекта типа StringBuilder полученный результат сохраняется в текущем объекте. Память для этого объекта будет выделяться заново только в том случае, если текущее количество символов (Length) превысит максимальное (Capacity). 1)Добавление строки к объекту — метод Append() используется для добавления некоего объекта в конец объекта StringBuilder. Рассмотрим хотя бы два примера: а)добавление строки: StringBuilder sb = new StringBuilder("qwerty"); sb.Append("++"); Console.WriteLine(sb); На экране будет выведено: qwerty++ б)добавление числа (оно автоматически преобразуется в строку): StringBuilder sb = new StringBuilder("qwerty"); sb.Append(12.5); Console.WriteLine(sb); Результатом будет следующая строка: Qwerty12,5 2)Вставка — в заданную позицию (3) объекта sb вставим две копии строки "357": StringBuilder sb = new StringBuilder("qwerty"); sb.Insert(3,"357",2); Результат такой операции: Qwe357357rty 3)Удаление — из объекта sb, начиная с указанной позиции (1), удаляем требуемое количество символов (2): StringBuilder sb = new StringBuilder("qwerty"); sb.Remove(1,2); В результате получим: Qrty 4)Замена — все вхождения искомой строки ("we") заменяет на новое значение ("ABC"): StringBuilder sb = new StringBuilder("qwerty_qwerty"); sb.Replace("we","ABC"); В результате замены имеем строку: QABCrty_qABCrty Также можно делать замену отдельных символов, например: StringBuilder sb = new StringBuilder("qwerty_qwerty"); sb.Replace('w','A'); В этом случае результат будет таким: QAerty_qAerty 5)Преобразование объекта типа StringBuilder в строку класса String: string s = sb.ToString();
Пример 1. Дана символьная строка, содержащая хотя бы один символ '?' (вопросительный знак). Удалить все символы '!' (восклицательный знак) или '.' (точка), расположенные до первого символа '?' и заменить все пробелы, расположенные за первым символом '?', на символ подчёркивания '_'. Возможная реализация: using System; using System.Text; Namespace Prim_StringBuilder { Class Program { public static void Main(string[] args) { Console.WriteLine("Исходная строка:"); string s = Console.ReadLine(); int k = s.IndexOf('?'); Console.WriteLine("k={0}", k); StringBuilder b1 = new StringBuilder(s.Substring(0, k)); Console.WriteLine(b1); StringBuilder b2 = new StringBuilder(s.Substring(k)); Console.WriteLine(b2); for(int i = 0; i < b1.Length; i++) { if(b1[i] == '!' || b1[i] == '.') { b1.Remove(i, 1); i--; } } b2.Replace(' ', '_'); s = b1.ToString() + b2.ToString(); Console.WriteLine("Результат:\n"+s); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } } Результат работы: Исходная строка: 1a!2.3!!.. 4.!.?6 7! ..? k=15 1a!2.3!!.. 4.!. ?6 7! ..? Результат: 1a23 4?6_7!_..? Press any key to continue . . .
|
||
Последнее изменение этой страницы: 2018-05-10; просмотров: 211. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |