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


Символы и строки

Содержание

Символы charСимвольный тип char предназначен для хранения символа в кодировке Unicode. Символьный тип относится к встроенным типам данных С# и соответствует стандартному классу Сhar библиотеки .Net из пространства имен System.

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

Слайд 1Символы и строки
символы char,
неизменяемые строки string,
изменяемые строки StringBuider,

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

Символы и строкисимволы char, неизменяемые строки string, изменяемые строки StringBuider, регулярные выражения Regex

Слайд 2Символы char
Символьный тип char предназначен для хранения символа в кодировке

Unicode.

Символьный тип относится к встроенным типам данных С# и

соответствует стандартному классу Сhar библиотеки .Net из пространства имен System.
Символы charСимвольный тип char предназначен для хранения символа в кодировке Unicode. Символьный тип относится к встроенным типам

Слайд 3Основные методы

Основные методы

Слайд 4static void Main()
{
try

{
char b

= 'B', c = '\x64', d = '\uffff';
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 //цикл выполнятеся до тех пор, пока не ввели символ e
{
Console.WriteLine("Введите символ: ");
a = char.Parse(Console.ReadLine());
Console.WriteLine("Введен символ {0}, его код {1}, его категория {2}", a, (int)a, char.GetUnicodeCategory(a));
if (char.IsLetter(a)) Console.WriteLine("Буква");
if (char.IsUpper(a)) Console.WriteLine("Верхний регистр");
if (char.IsLower(a)) Console.WriteLine("Нижний регистр");
if (char.IsControl(a)) Console.WriteLine("Управляющий символ");
if (char.IsNumber(a)) Console.WriteLine("Число");
if (char.IsPunctuation(a)) Console.WriteLine("Разделитель");
} while (a != 'e');
}
catch
{
Console.WriteLine("Возникло исключение");
}
}

static void Main()   {    try    {

Слайд 6//Организация массива символов и работа с ним на основе базового

класса Array:
 static void Main() {

char[] a ={ 'm', 'a', 'Х', 'i', 'M', 'u', 'S' , '!', '!', '!' };
char [] b="кол около колокола".ToCharArray(); //преобразование строки в массив символов
PrintArray("Исходный массив а:", a);
for (int x=0;x if (char.IsLower(a[x])) a[x]=char.ToUpper(a[x]);
PrintArray("Измененный массив а:", a);
PrintArray("Исходный массив b:", b);
Array.Reverse(b);
PrintArray("Измененный массив b:", b);
}
 
static void PrintArray(string line, Array a)
{
Console.WriteLine(line);
foreach( object x in a) Console.Write(x);
Console.WriteLine('\n');
}

//Организация массива символов и работа с ним на основе базового класса Array: static void Main()

Слайд 7Неизменяемые строки string
Тип string, предназначенный для работы со стоками символов

в кодировке Unicode.

Ему соответствует базовый тип класса System.String библиотеки

.Net.

Каждый объект string - это неизменяемая последовательность символов Unicode, т.е. методы, предназначенные для изменения строк, возвращают измененные копии, исходные же строки остаются неизменными.
Неизменяемые строки stringТип string, предназначенный для работы со стоками символов в кодировке Unicode. Ему соответствует базовый тип

Слайд 8Создание строк

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

Слайд 9Методы работы со строками

Методы работы со строками

Слайд 10Методы работы со строками

Методы работы со строками

Слайд 11
вызов статических методов происходит через обращение к имени класса:
String.Concat(str1,

str2)

в остальных случаях через обращение к экземплярам класса:
str.ToLower()

вызов статических методов происходит через обращение к имени класса: String.Concat(str1, str2) в остальных случаях через обращение к

Слайд 12class Program {
static void Main()

{
string

str1 = "Первая строка"; string str2 = string.Copy(str1);
string str3 = "Вторая строка«; string str4 = "ВТОРАЯ строка";
string strUp, strLow;
int result, idx;
Console.WriteLine("str1: " + str1); Console.WriteLine("str3: " + str3);
Console.WriteLine("str4: " + str4);
Console.WriteLine("Длина строки str1: " + str1.Length);

// Создаем прописную и строчную версии строки str1.
strLow = str1.ToLower(); strUp = str1.ToUpper();
Console.WriteLine("Строчная версия строки str1: " + strLow);
Console.WriteLine("Прописная версия строки str1: " + strUp);
Console.WriteLine();

// Сравниваем строки,
result = str1.CompareTo(str3);
if (result == 0) Console.WriteLine("str1 и str3 равны.");
else if (result < 0) Console.WriteLine("str1 меньше, чем str3");
else Console.WriteLine("str1 больше, чем str3");
Console.WriteLine();

class Program  {    static void Main()    {

Слайд 13 //сравниваем строки без учета регистра

result = String.Compare(str3, str4, true);

if (result == 0) Console.WriteLine("str3 и str4 равны без учета регистра.");
else Console.WriteLine("str3 и str4 не равны без учета регистра.");
Console.WriteLine();
//сравниваем части строк
result = String.Compare(str1, 4, str2, 4, 2);
if (result == 0) Console.WriteLine("часть str1 и str2 равны");
else Console.WriteLine("часть str1 и str2 не равны"); Console.WriteLine();
// Поиск строк.
idx = str2.IndexOf("строка");
Console.WriteLine("Индекс первого вхождения подстроки строка: " + idx);
idx = str2.LastIndexOf("о");
Console.WriteLine("Индекс последнего вхождения символа о: " + idx);
//конкатенация
string str = String.Concat(str1, str2, str3, str4);
Console.WriteLine("конкатенация"+ str);
//удаление подстроки
str = str.Remove(0, str1.Length); Console.WriteLine(str);
//замена подстроки "строка" на пустую подстроку
str = str.Replace("строка", ""); Console.WriteLine(str);
} } }


//сравниваем строки без учета регистра      result =

Слайд 15class Program
{
// методы разделения строки на

элементы Split и слияние массива строк в единую строку Join

static

void Main()
{
string poems = "тучки небесные вечные странники";
char[] div = { ' '}; //создаем массив разделителей
// Разбиваем строку на части,
string[] parts = poems.Split(div);
Console.WriteLine("Результат разбиения строки на части: ");
for (int i = 0; i < parts.Length; i++)
Console.WriteLine(parts[i]);
// Теперь собираем эти части в одну строку, в качестве разделителя используем символ |
string whole = String.Join(" | ", parts);
Console.WriteLine("Результат сборки: ");
Console.WriteLine(whole);
} }



class Program  {  // методы разделения строки на элементы Split и слияние массива строк в

Слайд 16При работе с объектами класса string нужно учитывать их свойство

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


 
string a="";
for (int i = 1; i <= 100; i++) a +="!";
Console.WriteLine(a);
 
В этом случае в памяти компьютера будет сформировано 100 различных строк вида:
!
!!
!!!

!!!...!!


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

При работе с объектами класса string нужно учитывать их свойство неизменяемости, т.е. методы изменяют не сами строки,

Слайд 17Изменяемые строки
Чтобы создать строку, которую можно изменять, в С# предусмотрен

класс StringBuilder, определенный в пространстве имен System.Text. Объекты этого класса

всегда объявляются с явным вызовом конструктора класса (через операцию new) .



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

Слайд 18static void Main() {
try {
StringBuilder str=new StringBuilder("Площадь"); PrintString(str);
str.Append(" треугольника равна"); PrintString(str);
str.AppendFormat(" {0} см

", 123.456); PrintString(str);
str.Insert(8, "данного "); PrintString(str);
str.Remove(7, 21); PrintString(str);
str.Replace("а", "о"); PrintString(str);
StringBuilder str1=new StringBuilder(Console.ReadLine());
StringBuilder str2=new StringBuilder(Console.ReadLine());
Console.WriteLine(str1.Equals(str2));
}
catch

{
Console.WriteLine("Вознико исключение"); }
}
  static void PrintString(StringBuilder a) {
Console.WriteLine("Строка: "+a);
Console.WriteLine("Текущая длина строки " +a.Length);
Console.WriteLine("Объем буфера "+a.Capacity);
Console.WriteLine("Максимальный объем буфера "+a.MaxCapacity);
Console.WriteLine();
}

static void Main()	{		try		{ 		StringBuilder str=new StringBuilder(

Слайд 20using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2 {
class Program

{
//С изменяемой строкой можно работать не

только как с объектом, но как с массивом символов:
static void Main()
{
StringBuilder a = new StringBuilder("2*3=3*2");
Console.WriteLine(a);
int k = 0;
for (int i = 0; i < a.Length; ++i)
if (char.IsDigit(a[i])) k += int.Parse(a[i].ToString());
Console.WriteLine(k);
}
}
}



using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2	{  class Program  {    //С изменяемой строкой

Слайд 21Регулярные выражения
Регулярное выражение – это шаблон, по которому выполняется поиск

соответствующего фрагмента текста.

Эффективный поиск в тексте по заданному шаблону;
Редактирование текста;
Формирование

итоговых отчетов по результатам работы с текстом.

Регулярные выраженияРегулярное выражение – это шаблон, по которому выполняется поиск соответствующего фрагмента текста.Эффективный поиск в тексте по

Слайд 22Метасимволы в регулярных выражениях
Язык описания регулярных выражений состоит из символов

двух видов: обычных символов и метасимволов.

Обычный символ представляет в

выражении сам себя, а метасимвол – некоторый класс символов.
Метасимволы в регулярных выраженияхЯзык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный

Слайд 24Кроме метасимволов, обозначающие классы символов, могут применяться уточняющие метасимволы:

Кроме метасимволов, обозначающие классы символов, могут применяться уточняющие метасимволы:

Слайд 25Повторители – метасимволы, которые располагаются непосредственно после обычного символа или

группы символов и задают количество его повторений в выражении

Повторители – метасимволы, которые располагаются непосредственно после обычного символа или группы символов и задают количество его повторений

Слайд 26Регулярное выражение записывается в виде строкового литерала, перед строкой необходимо

ставить символ @.

Символ @ можно не ставить, если в

качестве шаблона используется шаблон без метасимволов.

Если нужно найти какой-то символ, который является метасимволом (например, точку), можно это сделать защитив ее обратным слэшем. Т.е. просто точка означает любой одиночный символ, а \. означает просто точку.

Примеры регулярных выражений:

слово rus – @"rus" или "rus"

№ телефона в формате xxx-xx-xx –
@"\d\d\d-\d\d-\d\d" или @"\d{3}(-\d\d){2} "

номер автомобиля - @"[A-Z]\d{3}[A-Z]{2}\d{2,3}RUS"

Регулярное выражение записывается в виде строкового литерала, перед строкой необходимо ставить символ @. Символ @ можно не

Слайд 27Поиск в тексте по шаблону
Пространство имен библиотеки базовых классов System.Text.RegularExpressions

содержит все объекты платформы .NET Framework, имеющие отношение к регулярным

выражениям.

Класс, поддерживающий регулярные выражения, - класс Regex, он представляет неизменяемые откомпилированные регулярные выражения.

Для описания регулярного выражения в классе определено несколько перегруженных конструкторов:

Regex() – создает пустое выражение;

Regex(String) – создает заданное выражение;

Regex(String, RegexOptions) – создает заданное выражение и задает параметры для его обработки с помощью элементов перечисления RegexOptions (например, различать или нет прописные и строчные буквы).

Поиск в тексте по шаблонуПространство имен библиотеки базовых классов System.Text.RegularExpressions содержит все объекты платформы .NET Framework, имеющие

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

класса Regex:

IsMach,
Mach,
Matches.

Поиск фрагментов строки, соответствующих заданному выражению, выполняется с помощью методов класса Regex:IsMach, Mach, Matches.

Слайд 29/*Метод IsMach возвращает true, если фрагмент, соответствующий выражению, в заданной

строке найден, и false в противном случае*/

using System;
using System.Collections.Generic;
using System.Linq;
using

System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{
class Program
{
static void Main()
{
Regex r = new Regex("собака", RegexOptions.IgnoreCase);
string text1 = "Кот в доме, собака в конуре.";
string text2 = "Котик в доме, собачка в конуре.";
Console.WriteLine(r.IsMatch(text1));
Console.WriteLine(r.IsMatch(text2)); }

} }


RegexOptions.IgnoreCase – означает, что регулярное выражение применяется без учеба регистра символов

/*Метод IsMach возвращает true, если фрагмент, соответствующий выражению, в заданной строке найден, и false в противном случае*/using

Слайд 30 /* Можно использовать конструкцию выбора из нескольких элементов. Варианты

выбора перечисляются через вертикальную черту*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace

ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Regex r = new Regex("собака|кот",RegexOptions.IgnoreCase);
string text1 = "Кот в доме, собака в конуре.";
string text2 = "Котик в доме, собачка в конуре.";
Console.WriteLine(r.IsMatch(text1));
Console.WriteLine(r.IsMatch(text2));
} } }


/* Можно использовать конструкцию выбора из нескольких элементов. Варианты выбора перечисляются через вертикальную черту*/using System;using System.Collections.Generic;using

Слайд 31 //есть ли в заданных строках номера телефона в формате

xx-xx-xx или xxx-xx-xx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{

class Program
{
static void Main()
{
Regex r = new Regex(@"\d{2,3}(-\d\d){2}");
string text1 = "tel:123-45-67";
string text2 = "tel:no";
string text3 = "tel:12-34-56";
Console.WriteLine(r.IsMatch(text1));
Console.WriteLine(r.IsMatch(text2));
Console.WriteLine(r.IsMatch(text3));
} } }


//есть ли в заданных строках номера телефона в формате xx-xx-xx или xxx-xx-xx:using System;using System.Collections.Generic;using System.Linq;using System.Text;using

Слайд 32 /*Метод Match класса Regex не просто определяет, содержится ли

текст, соответствующий шаблону, а возвращает объект класса Match – последовательность

фрагментов текста, совпавших с шаблоном*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{
class Program {
static void Main() {
Regex r = new Regex(@"\d{2,3}(-\d\d){2}");
string text = @"Контакты в Минске tel:123-45-67, 123-34-56; fax:123-56-45
Контакты в Бресте tel:12-34-56; fax:12-56-45";
Match tel = r.Match(text);
while (tel.Success)
{
Console.WriteLine(tel);
tel = tel.NextMatch(); }
} } }


/*Метод Match класса Regex не просто определяет, содержится ли текст, соответствующий шаблону, а возвращает объект класса

Слайд 33 //подсчитать сумму целых чисел, встречающихся в тексте:
using System;
using System.Collections.Generic;
using

System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3{
class Program {
static void

Main() {
Regex r = new Regex(@"[-+]?\d+");
string text = @"5*10=50 -80/40=-2";
Match teg = r.Match(text);
int sum = 0;
while (teg.Success)
{
Console.WriteLine(teg);
sum += int.Parse(teg.ToString());
teg = teg.NextMatch();
}
Console.WriteLine("sum=" + sum);
} } }
//подсчитать сумму целых чисел, встречающихся в тексте:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication3{  class Program

Слайд 34 /*Метод Matches класса Regex возвращает объект класса MatchCollection –

коллекцию всех фрагментов заданной строки, совпавших с шаблоном. При этом

метод Matches многократно запускает метод Match, каждый раз начиная поиск с того места, на котором закончился предыдущий поиск*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string text = @"5*10=50 -80/40=-2";
Regex theReg = new Regex(@"[-+]?\d+");
MatchCollection theMatches = theReg.Matches(text);
foreach (Match theMatch in theMatches)
{ Console.Write("{0} ", theMatch.ToString()); }
Console.WriteLine(); }
} }



/*Метод Matches класса Regex возвращает объект класса MatchCollection – коллекцию всех фрагментов заданной строки, совпавших с

Слайд 35Редактирование текста
// метод Replace класса Regex позволяет выполнять замену

одного фрагмента текста другим или удаление фрагментов текста:
using System;
using System.Collections.Generic;
using

System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3 {
class Program {

static void Main(string[] args) {
string text = @"Контакты в Минске tel:123-45-67, 123-34-56; fax:123-56-45.
Контакты в Бресте tel:12-34-56; fax:11-56-45";
Console.WriteLine("Старые данные\n" + text);
string newText = Regex.Replace(text, "123-", "890-");
Console.WriteLine("Новые данные\n" + newText);
}
}
}



Редактирование текста // метод Replace класса Regex позволяет выполнять замену одного фрагмента текста другим или удаление фрагментов

Слайд 36using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{
class Program

{
// Удаление всех номеров телефонов

из текста:

static void Main()
{
string text = @"Контакты в Минске tel:123-45-67, 123-34-56; fax:123-56-45.
Контакты в Бресте tel:12-34-56; fax:12-56-45";
Console.WriteLine("Старые данные\n"+text);
string newText=Regex.Replace(text, @"\d{2,3}(-\d\d){2}", "");
Console.WriteLine("Новые данные\n" + newText);
}
}
}




using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication3{  class Program  {    // Удаление

Слайд 37using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{
class Program

{
//Разбиение исходного текста на фрагменты:

static

void Main()
{
string text = @"Контакты в Минске tel:123-45-67, 123-34-56; fax:123-56-45.
Контакты в Бресте tel:12-34-56; fax:12-56-45";
string []newText=Regex.Split(text,"[ ,.:;]+");
foreach( string a in newText)
Console.WriteLine(a);
}
}
}




using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication3{  class Program  {    //Разбиение исходного

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

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

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

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

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


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

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