Лекция Строки




Скачати 104.02 Kb.
НазваЛекция Строки
Дата конвертації19.09.2014
Розмір104.02 Kb.
ТипЛекция
mir.zavantag.com > Право > Лекция
Лекция 8. Строки

Для работы со строками в языке C# существует несколько возможностей:

  • используя символьный тип char(символ), который соответствует классу System.Char, для организации строки – массив символов типа char, который соответствует классу System.Array

  • используя строки типа string

  • используя строки типа StringBuilder

Работа с символами в С#

Символьный тип char предназначен для хранения символов в кодировке Unicode. Символьный тип относится к встроенным типам данных C# и соответствует классу System.Char. В этом классе определены статические методы, позволяющие задать вид и категорию символа, а также преобразовать символ в верхний или нижний регистр и в число. В таблице 8.1 представлены основные методы класса System.Char.
Таблица 8.1 – Основные методы класса System.Char

Метод

Описание

GetNumericValue

Возвращает числовое значение символа, если он является цифрой, и -1 в противном случае

GetUnicodeCategory

Возвращает категорию Unicode-символа(Bce Unicode-символы разделены на категории, например, десятичные цифры (Decimal-DigitNumber), римские цифры (LetterNumber), разделители строк (LineSeparator), буквы в нижнем регистре (LowercaseLetter) и т. д.)

IsControl

Возвращает true, если символ является управляющим

IsDigit

Возвращает true, если символ является десятичной цифрой

IsLetter

Возвращает true, если символ является буквой

IsLetterOrDigit

Возвращает true, если символ является буквой или цифрой

IsLower

Возвращает true, если символ задан в нижнем регистре

IsNumber

Возвращает true, если символ является числом (десятичным или шестнадцатеричным)

IsPunctuation

Возвращает true, если символ является знаком препинания

IsSeparator

Возвращает true, если символ является разделителем

Is Upper

Возвращает true, если символ записан в верхнем регистре

IsWhiteSpace

Возвращает true, если символ является пробельным (пробел, перевод строки и возврат каретки)

Parse

Преобразует строку в символ (строка должна состоять из одного символа)

ToLower

Преобразует символ в нижний регистр

ToUpper

Преобразует символ в верхний регистр

MaxValue, MinValue

Возвращают символы с максимальным и минимальным кодами (эти символы не имеют видимого представления)

^ Пример применения методов класса System.Char

using System;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{ try

{

char b = 'В', с = '\x63', d = '\u0032';

Console.WriteLine( "{0} {1} {2}",b,c,d);

Console.WriteLine("{0}{1}{2}",char.ToLower(b),char.ToUpper(c), char.GetNumericValue(d));

char a;

do

{

Console.Write( "Введите символ: " );

a = char.Parse( Console.ReadLine());

Console.WriteLine( "Введен символ {0}, его код - {1}", a, (int)a );

if (char.IsLetter(a)) Console.WriteLine("Буква");

if (char.IsUpper(a)) Console.WriteLine("Верхний peгистр");

if (char.IsLower(a)) Console.WriteLine("Нижний peгистр");

if (char.IsControl(a)) Console.WriteLine("Управляющий");

if (char.IsNumber(a)) Console.WriteLine("Число");

if (char.IsPunctuation(a)) Console.WгiteLine("Paздeлитeль");

}

while (a != 'q');

}

catch

{

Console.WriteLine( "Возникло исключение" );

return;

} } } }

В приведенном примере вывод символа сопровождается его кодом в десятичном виде. Для вывода кода используется явное преобразование к целому типу. Явное преобразование из символов в строки и обратно в С# не существует, неявным же образом любой объект, в том числе и символ, может быть преобразован в строку, например:

string s = 'к' + 'о' + 'т'; // результат - строка "кот"

При вводе и преобразовании могут возникать исключительные ситуации, например, если пользователь введет пустую строку. Для «мягкого» завершения программы предусмотрена обработка исключений.

^ Массивы символов

Массив символов, как и массив любого иного типа, построен на основе базового класса Array, некоторые свойства и методы которого были перечислены в лекции 7. Применение этих методов позволяет эффективно решать задачи на обработку строк.

^ Пример обработки строк (как массива символов) с применением класса System.Array

using System;

namespace ConsoleApplication1

{ class Class1

{ static void Main()

{

char[] a = { 'm', 'a', 's', 's', 'i', 'v }; //инициализация массива символов поэлементно

// ТоCharАггау()- метод класса string – разбивает строку на символы

char[] b = "а роза упала на лапу азора".ТоCharАггау();

PrintArray("Исходный массив а:", а );

int pos = Array.IndexOf( a, 'm' );

a[pos] = 'M';

PrintArray( "Измененный массив а:", а );

PrintArray( "Исходный массив b:", b );

Array.Reverse( b );

PrintArray( "Измененный массив b:", b );

}

public static void PrintArray( string s, Array a )

{

Console.WriteLine( s );

foreach ( object x in a ) Console.Write( x );

Console.WriteLine( "\n" ):

}}}

^ Строки типа string

Тип string, предназначенный для работы со строками символов в кодировке Unicode, является встроенным типом С#. Ему соответствует базовый класс System.String библиотеки .NET.

^ Создать строку можно несколькими способами:

string s; // объявление строки, без выделения памяти

string t = "qqq"; // инициализация строковым литералом

string u = new string (' ', 20); // создание строки из 20 пробелов

char[] а = { '0', '0', '0' }; // создание строки как массива символов и ее инициализация

string v = new string (a); // создание строки из массива символов

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

  • присваивание (=);

  • проверка на равенство (= =);

  • проверка на неравенство (!=);

  • обращение по индексу ([ ]);

  • сцепление (конкатенация) строк (+).

Несмотря на то, что строки являются ссылочным типом данных, на равенство и неравенство проверяются не ссылки, а значения строк.

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

В классе System.String предусмотрено множество методов, полей и свойств, поз­воляющих выполнять со строками практически любые действия. Основные элементы класса приведены в таблице 8.2.

Таблица 8.2 – Основные элементы класса System.String

Метод

Описание

Compare

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

CompareOrdinal

Сравнение двух строк по кодам символов. Разные реализации метода позволяют сравнивать строки и подстроки

CompareTo

Сравнение текущего экземпляра строки с другой строкой

Concat

Конкатенация (соединение) строк. Метод допускает сцепление произвольного числа строк

Copy

Создание копии строки

Empty

Пустая строка (только для чтения)

Format

Форматирование в соответствии с заданными спецификаторами формата

IndexOf,IndexOfAny, LastIndexOf, LastIndexOfAny

Определение индексов первого и последнего вхождения заданной подстроки или любого символа из заданного набора

Insert

Вставка подстроки в заданную позицию

Intern, IsInterned

Возвращает ссылку на строку, если такая уже существует. Если строки нет, Intern добавляет строку во внутренний пул, Islntern возвращает nul1

Join

Слияние массива строк в единую строку. Между элементами массива вставляются разделители

Length

Длина строки (количество символов)

PadLeft,PadRight

Выравнивание строки по левому или правому краю путем вставки нужного числа пробелов в начале или в конце строки

Remove

Удаление подстроки из заданной позиции

Продолжение таблицы 8.2

Метод

Описание

Replace

Замена всех вхождений заданной подстроки или символа новыми подстрокой или символом

Split

Разделяет строку на элементы, используя заданные разделители. Результаты помещаются в массив строк

StartWith, EndWith

Возвращает true или false в зависимости от того, начинается или заканчивается строка заданной подстрокой

Substring

Выделение подстроки, начиная с заданной позиции

ToCharArray

Преобразование строки в массив символов

ToLower,ToUpper

Преобразование символов строки к нижнему или верхнему регистру

Trim,TrimStart,TrimEnd

Удаление пробелов в начале и конце строки или только с одного ее конца (обратные по отношению к методам PadLeft и PadRlght действия)

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

using System;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

string s = "прекрасная королева Изольда";

Console.WriteLine( s );

string sub = s.Substring( 3 ).Remove( 12, 2 );

Console.WriteLine( sub );

string[] mas = s.Split(' ');

string joined = string.Join( "! ", mas );

Console.WriteLine( joined );

Console.WriteLine( "Введите строку" );

string x = Console.ReadLine();

Console.WriteLine( "Вы ввели строку " + x );

double a = 12.234;

int b = 29;

Console.WriteLine( " a = {0,6:C} b = {1,2:X}", a, b ); //неявный вызов метода Format

Console.WriteLine( " a = {0,6:0.##} b = {1,5:0.# ' руб. '}",a, b );//пользовательский шаблон

Console.WriteLine("a = {0:F3} b = {1:D3}", a, b); //задание ширины дробной части

} } }

прекрасная королева Изольда

красная корова Изольда

прекрасная! королева! Изольда

Введите строку

не хочу!

Вы ввели строку не хочу!

а = 12,23р. b = 1D

а = 12,23 b = 29 руб.

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

В предыдущем примере неявно применяется метод 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

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

^ Строки типа StringBuilder

Возможности, предоставляемые классом 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, чтобы не занимать лишнюю память.

Схожі:

Лекция Строки iconAnnotation
Тогда эта книга — для вас. Александра МадунцПредисловие,Лекция первая,Лекция вторая,Лекция третья,Лекция четвертая,Лекция пятая,Лекция...
Лекция Строки iconТема 10: строки І терміни. Позовна давність
«строк», «термін», «присікальний строк», «гарантійний строк», «відкладальні строки», «скасувальні строки», «позовна давність», «спеціальна...
Лекция Строки iconЛекция №8
Лекция №8 Мероприятия по предотвращению эрозионных процессов в почвах. Особенности с Х. использования эродированных почв
Лекция Строки iconЛекция введение в курс гистологии
Гистогенез и органогенез лекция общие принципы организации тканей. Эпителиальные ткани
Лекция Строки iconМатричная игра задана платежной матрицей
Решение. Символ «Т» означает, что исходную матрицу необходимо транспонировать, т е заменить строки на столбцы. Соответственно, игрок...
Лекция Строки iconЛекция Зоология 818 ауд. Лекция 06

Лекция Строки iconЛекция по теме №38 «Противодействие расследованию и пути его преодоления»...
Лекция подготовлена начальником кафедры криминалистики полковником милиции, к ю н., доцентом Ф. Г. Аминевым
Лекция Строки iconКурс Строки проведення сесій

Лекция Строки iconЭти строки помогут вам, когда вы

Лекция Строки iconТем и
Теми 5, 6, Судові витрати, засоби відповідальності та строки у господарському процесі
Додайте кнопку на своєму сайті:
Школьные материалы


База даних захищена авторським правом © 2013
звернутися до адміністрації
mir.zavantag.com
Головна сторінка