Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Строки типа StringBuilder

Пользовательские шаблоны форматирования

Форматирование строк

В предыдущем примере неявно применяется метод Format, который заменяет все вхождения параметров в фигурных скобках значениями соответствующих переменных из списка вывода. После номера параметра можно задать минимальную ширину поля вывода, а также указать спецификатор формата, который определяет форму представления выводимого значения.

Спецификатор формата, как явствует из его названия, определяет формат вывода значения. Например, спецификатор С (Currency) означает, что параметр должен форматироваться как валюта с учетом национальных особенностей представления, а спецификатор X (Hexadecimal) задает шестнадцатеричную форму представления выводимого значения. После некоторых спецификаторов можно задать количество позиций, отводимых под дробную часть выводимого значения.

Например, при записи a = {0,6:0.##} после двоеточия задается вид выводимого значения посимвольно, причем на месте каждого символа может стоять либо #, либо 0. Если указан знак #, на этом месте будет выведена цифра числа, если она не равна нулю. Если указан 0, будет выведена любая цифра, в том числе и 0.

В таблице 8.3 приведены примеры шаблонов и результатов вывода.

Таблица 8.3. - Примеры применения пользовательских шаблонов форматирования

Число Шаблон Вид

1,243 00.00 01,24

1,243 #.## 1,24

0,1 00.00 00,10

0,1 #.##,1

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

Возможности, предоставляемые классом string, широки, однако требование не­изменности его объектов может оказаться неудобным. В этом случае для работы со строками применяется класс StringBuilder, определенный в пространстве имен System. Text и позволяющий изменять значение своих экземпляров.

При создании экземпляра обязательно использовать операцию new и конструктор, например:

StringBuilder a = new StringBuilder(); //1

StringBuilder b = new StringBuilder("qwerty"); //2

StringBuilder с = new StringBuilder(100); //3

StringBuilder d = new StringBuilder("qwerty", 100); //4

StringBuilder e = new StringBuilder("qwerty", 1, 3, 100); //5

В конструкторе класса указываются два вида параметров: инициализирующая строка или подстрока и объем памяти, отводимой под экземпляр. Один или оба параметра могут отсутствовать, в этом случае используются их значения по умолчанию.

Если применяется конструктор без параметров (оператор 1), создается пустая строка размера, заданного по умолчанию (16 байт). Другие виды конструкторов задают объем памяти, выделяемой строке, и/или ее начальное значение. Например, в операторе 5 объект инициализируется подстрокой длиной 3 символа, Начиная с первого (подстрока "wer"). Основные элементы класса StringBuilder приведены в таблице 8.4.

Таблица 8.4 - Основные элементы класса System.Text.StringBuilder

Метод Описание
Append Добавление в конец строки. Разные варианты метода позволяют добавлять в строку величины любых встроенных типов, массивы символов, строки и подстроки типа string
AppendFormat Добавление форматированной строки в конец строки
Capacity Получение или установка емкости буфера. Если устанавливаемое значение меньше текущей длины строки или больше максимального, генерируется исключение
Insert Вставка подстроки в заданную позицию
Length Длина строки (количество символов)
MaxCapacity Максимальный размер буфера
Remove Удаление подстроки из заданной позиции
Replасе Замена всех вхождений заданной подстроки или символа новой подстрокой или символом
ToString Преобразование в строку типа String

Пример обработки строк типа StringBuilder

 

using System;

using System.Text;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

Console.Write("Введите зарплату: ");

double salary = double.Parse(Console.ReadLine());

StringBuilder a = new StringBuilder();

a.Append("зарплата ");

a.AppendFormat("{0, 6:C} - в год {1, 6:C}", salary, salary * 12);

Console.WriteLine(a);

a.Replace("p.", "тыс.$");

Console.WriteLine("А лучше было бы: " + a); } } }

 

Емкость буфера не соответствует количеству символов в строке и может увеличиваться в процессе работы программы. Программист может уменьшить размер буфера с помощью свойства Capacity, чтобы не занимать лишнюю память.

 

Пример программы

#region Лаба 5 работа по строкам Сокращение ФИО до Фамилии + Инициалы

static void laba5()

{

Console.WriteLine("Работа со строками");

string fio="Nataly Nekk Serd",i="",o="";//Объявление ФИО

int j=0,s;

bool il=false,ol=false;

Console.WriteLine("Исходная ФИО: "+fio);

s= fio.IndexOf(" "); // Получаю длину фамилии

while (fio.Length > j)

{

 

if ((fio[j] == ' ')&(il== false)) // Получаем первую букву имени

{

i=fio[j+1].ToString();

il= true;

}

else if ((fio[j]==' ')&(ol==false)) // Получаем первую букву отчества

{

o=fio[j+1].ToString();

ol=true;

}

j++;

}

fio = fio.Remove(s)+" "+i+"."+o+".";//обрезаю ФИО до фамилии и присоединяю //инициалы

Console.WriteLine("После обработки: "+fio);// Вывожу на экран результат

}

#endregion


static void laba2()

{

 

char[] delimiterChars = {' '};//разделители

Console.WriteLine("Поехали делать вторую лабу");

string myString1 = "Nataly Nekk Serd"; //ФИО

Console.WriteLine(myString1);

string[] myS = myString1.Split(delimiterChars);//Разделение строки с //использованием разделителей на выходе будет массив

Console.WriteLine("Фамилия " + myS[0] + " Имя " + myS[1] + " Отчество " + myS[2]);

Console.WriteLine("Получилось: "+myS[0]+" "+myS[1].Remove(1)+"."+myS[2].Remove(1)+"."); На выходе ФИО плюс инициалы

}

#endregion

<== предыдущая лекция | следующая лекция ==>
Операции над строками. Тип string, предназначенный для работы со строками символов в кодировке Unicode, является встроенным типом С# | Лекция. Реанимация- это комплекс лечебных мероприятий, направленных на восстановление сердечной деятельности
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 386; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.