Разделы презентаций


Работа со строками C#

Содержание

C#Символы и строкиСимвол в языке C# имеет тип System.Char. Каждый символ – это два байта в кодировке Unicode.Примеры объявления символьных переменных:char ch1 = ‘Ы’; // инициализация символом в одинарных кавычкахchar ch2 =

Слайды и текст этой презентации

Слайд 1Работа со строками

C#

Работа со строками C#

Слайд 2C#
Символы и строки
Символ в языке C# имеет тип System.Char. Каждый

символ – это два байта в кодировке Unicode.
Примеры объявления символьных

переменных:

char ch1 = ‘Ы’; // инициализация символом в одинарных кавычках
char ch2 = ‘\\’; // инициализация через escape-последовательность
char ch3 = ‘\x065’; // инициализация через escape-последовательность
char ch4 = ‘\u0117’; // инициализация через unicode-последовательность

Приведение символа к числу и наоборот:

short sch = (short)'G';
char ch = (char)217;

Допускается создавать массивы символов, но это не будут строки. Строки в C# заданы типом System.String. Они хранят символы в кодировке Unicode и дополнительная обработка на этот счет не требуется.

string str = “обычная строка”; // инициализируется текстом в двойных кавычках

C#Символы и строкиСимвол в языке C# имеет тип System.Char. Каждый символ – это два байта в кодировке

Слайд 3C#
Символы и строки
Строковые константы без escape-последовательностей (без интерполяции символов ‘\n’,

‘\t’ и т.п.):
string str = @”C:\Как видится\Так и в памяти\Остается\t\n”;
Класс

System.String относится к разряду immutable (неизменяемых), что означает, что ни один метод не приводит к изменению содержимого. Можно получить подстроку или информацию о строке, создать на базе этих данных новый строковый объект, но не изменить исходный.

string str = “abcdefgh”;
str = str.Replace(“a”, “A”); // простой вызов Replace строку не изменит

При обращении к элементу строки – к символу, доступ осуществляется в режиме read only:

string str = “abcdefgh”;
str[2] = ‘R’; //! error

C#Символы и строкиСтроковые константы без escape-последовательностей (без интерполяции символов ‘\n’, ‘\t’ и т.п.):string str = @”C:\Как видится\Так

Слайд 4C#
Символы и строки
Два особенно полезных метода: Split и Join –

действуют так же, как одноименные в Perl’е, PHP и других

скриптовых языках:

string str = @”C:\Как видится\Так и в памяти\Остается\t\n”;

// разделение строки
string[] strPieces = str.Split( new char[]{'\\', 'т'} );
foreach (string piece in strPieces)
Console.WriteLine(piece);

// сращивание массива строк в единую
str = String.Join( "--", strPieces );
Console.WriteLine(str);

C#Символы и строкиДва особенно полезных метода: Split и Join – действуют так же, как одноименные в Perl’е,

Слайд 5C#
Символы и строки
Для работы с длинным текстом неудобно иметь immutable

строковый класс. Используют класс StringBuilder, который по функциональности похож на

обычный string, но позволяет вносить изменения в хранимые данные.

using System.Text;


StringBuilder str = new StringBuilder( // инициализация
"It's broken me down now. This hurts and it's hopeless.\n" +
"Can't look to the future. The window is stained.\n" );
str.Append( // конкатенация
"Can't feel you anymore. Don't need you anymore.\n" +
"Don't believe you anymore. I don't need you anymore.\n" );
Console.WriteLine(str);

str.Replace( "me ", "y-o-u " ); // подмена подстроки на строку
str.Replace( "you ", "me " );
str.Replace( "y-o-u ", "you " );
str.Replace( "I ", "You " );
Console.WriteLine( "\n" + str);

C#Символы и строкиДля работы с длинным текстом неудобно иметь immutable строковый класс. Используют класс StringBuilder, который по

Слайд 6Регулярные выражения (regex) – язык описания образцов для обработки текста.

Регэкспы использовались давно, в основном в скриптовых языках, однако, именно

вариант использования их в Perl’е является стандартом де-факто для других языков, в том числе для C#.

Цели использования регулярных выражений:

для поиска подстроки по образцу
для разделения текста на части
для извлечение подстрок, соответствующих шаблону
для замены в тексте по шаблону

Регулярные выражения

string source = "в тексте много слов: риальне, парадокс, галактика, опасносте";
string pattern = @"парадокс";
if (Regex.IsMatch(source, pattern)) {
Console.WriteLine("текст подходит под шаблон");
}// if match ...

C#

Регулярные выражения (regex) – язык описания образцов для обработки текста. Регэкспы использовались давно, в основном в скриптовых

Слайд 7В конструкторе регекспа можно задать дополнительные параметры, влияющие на сверку

с шаблоном:

IgnoreCase – не учитывать регистр
Multiline – считать строку многострочной

с учетом \n (для $ и ^)
Compiled – откомпилировать регексп один раз
Singleline – считать строку однострочной
и другие...

Регулярные выражения

string source = "в тексте много слов: риальне, парадокс, галактика, опасносте";
string pattern = @"ПАРАДОКС";

Regex regPattern = new Regex(pattern, RegexOptions.IgnoreCase);
if (regPattern.IsMatch(source)) {
Console.WriteLine("текст подходит под шаблон");
}// if match w/options ...

C#

В конструкторе регекспа можно задать дополнительные параметры, влияющие на сверку с шаблоном:IgnoreCase – не учитывать регистрMultiline –

Слайд 8В шаблонах используют следующие метасимволы – символы, обозначающие группы других

символов:

\ – считать следующий метасимвол обычным символом
^ – начало строки
$

– конец строки
. (точка) – один произвольный символ, кроме \n
| – альтернатива (или)
() – группировка
[] – класс символов

Регулярные выражения

string source = "у текста на конце цифра 5";
string pattern = "...5$";

if (Regex.IsMatch(source, pattern)) {
Console.WriteLine("текст подходит под шаблон");
}// if match ...

C#

В шаблонах используют следующие метасимволы – символы, обозначающие группы других символов:\ – считать следующий метасимвол обычным символом^

Слайд 9Метасимволы могут иметь модификатор:

* – повторяется 0 или большее число

раз подряд
+ – повторяется 1 или большее число раз подряд
?

– 1 или 0 раз
{n} – повторяется точно n раз
{n,} – повторяется по меньшей мере n раз
{n,m} – повторяется не меньше n, но и не больше m раз

Регулярные выражения

string source = "вселенная звездами миллионы раз по 8888 видится нам";
string pattern = "^.*88{3}.+(нам){1}$";

if (Regex.IsMatch(source, pattern))
Console.WriteLine("вселенная шаблон рулит");

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

C#

Метасимволы могут иметь модификатор:* – повторяется 0 или большее число раз подряд+ – повторяется 1 или большее

Слайд 10Дополнительные метасимволы регекспов:

\w – алфавитно-цифровой и «_» символ
\W – не

\w
\s – один пробел, табуляция, перевод строки
\S – один не

пробел, не табуляция, не перевод строки
\d – одна цифра
\D – одна не цифра
\b – граница слова – позиция между \w и \W
\B – любая позиция, но не граница слова

Регулярные выражения

string source = "20.09.2008 DEBUG что-то пошло не так и $%^##*...";
string pattern = @"^\d{2}\.\d{2}\.\d+\s+\w+.*$";

if (Regex.IsMatch(source, pattern))
Console.WriteLine("нашли строку с датой в начале");

string source = "0123456789 DEBUG log";
string pattern = @"^\d{2,}\s+\w+.*$";

if (Regex.IsMatch(source, pattern))
Console.WriteLine("нашли строку с числами в начале");

C#

Дополнительные метасимволы регекспов:\w – алфавитно-цифровой и «_» символ\W – не \w\s – один пробел, табуляция, перевод строки\S

Слайд 11C#
Регулярные выражения
Если в шаблоне используются скобки, то результат сохраняется и

доступен через Groups:
string source = "Дата встречи - 25.10.2009";
string pattern

= @"(\d{2})\D(\d{2})\D(\d{4})";

Match result = Regex.Match(source, pattern);
if (result.Success)
foreach (Group group in result.Groups)
Console.WriteLine("начиная с позиции {0} --> {1}", group.Index, group.Value);

Именованные группы:

Regex r = new Regex( @"^(?\w+):(?\w+)“ );
Match m = r.Match( "Section1:119900“ );

Console.WriteLine( m.Groups["name"].Value ); // Section1
Console.WriteLine( m.Groups["value"].Value ); // 119900


Слайд 12Классы символов. Чтобы задать в шаблоне символ, входящий в некое

множество, используют классы. Класс символов задается в скобках [ и

]. Если первый символ в скобках ^, класс инвертируется. Внутри класса можно употреблять символ -, обозначающий диапазон. Например, a-z - одна из малых букв латинского алфавита, 0-9 - цифра и т.д.

Регулярные выражения

string source = "word слово slovo";
string pattern = @"[а-я]+";

Match resultWord = Regex.Match(source, pattern);
if (resultWord.Success)
Console.WriteLine("под шаблон попало: {0}", resultWord); // слово

string source = "word слово slovo";
string pattern = @"[^а-я ]+";

Match resultWord = Regex.Match(source, pattern);
if (resultWord.Success)
Console.WriteLine("под шаблон попало: {0}", resultWord); // word

C#

Классы символов. Чтобы задать в шаблоне символ, входящий в некое множество, используют классы. Класс символов задается в

Слайд 13Альтернативные шаблоны. Можно задать несколько вариантов при помощи разделителя |.

Область действия ограничивается границами шаблона или границами групп – круглых

скобок.

Регулярные выражения

string source = "ссылка на баш 'http://bash.org.ru' известна всем";
//string source = "файловый архив Интерсвязи лежит по адресу: ftp://ftp.chelcom.ru";
//string source = "башевый ящик 'mailto:admin@bash.org.ru' никому не нужен";

string pattern = @"(http://|ftp://|mailto:)([\w.@]+)";

Match resultAddr = Regex.Match(source, pattern);
if(resultAddr.Success) {
Console.WriteLine("протокол: " + resultAddr.Groups[1]); // http://
Console.WriteLine("домен или адрес: " + resultAddr.Groups[2]); // bash.org.ru
Console.WriteLine("шаблон в целом: " + resultAddr.Groups[0]); // http://bash.org.ru
}// if pattern valid ...

C#

Альтернативные шаблоны. Можно задать несколько вариантов при помощи разделителя |. Область действия ограничивается границами шаблона или границами

Слайд 14C#
Регулярные выражения
Использование регулярных выражений в Split позволяет избежать пустых значений,

объединить разделители:
Regex pattern = new Regex( @"-+|=+|_" );
string[] s =

pattern.Split( "one--t_wo-ba==nana" );
string str = string.Join( "|", s );
Console.WriteLine( str );
// one|t|wo|ba|nana
C#Регулярные выраженияИспользование регулярных выражений в Split позволяет избежать пустых значений, объединить разделители:Regex pattern = new Regex( @

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика