Содержание
-
Символы и строки
символы char, неизменяемые строки string, изменяемые строки StringBilder, регулярные выражения Regex
-
Символы char
Символьный тип char предназначен для хранения символа в кодировке Unicode. Символьный тип относится к встроенным типам данных С# и соответствует стандартному классу Сhar библиотеки .Net из пространства имен System.
-
Основные методы
-
static 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("Возникло исключение"); } }
-
-
//Организация массива символов и работа с ним на основе базового класса Array: static void Main() { char[] a ={ 'm', 'a', 'Х', 'i', 'M', 'u', 'S' , '!', '!', '!' }; char [] b="кол около колокола".ToCharArray(); //преобразование строки в массив символов PrintArray("Исходный массив а:", a); for (int x=0;x
-
Неизменяемые строки string
Тип string, предназначенный для работы со стоками символов в кодировке Unicode. Ему соответствует базовый тип класса System.String библиотеки .Net. Каждый объект string - это неизменяемая последовательность символов Unicode, т.е. методы, предназначенные для изменения строк, возвращают измененные копии, исходные же строки остаются неизменными.
-
Создание строк
-
Методы работы со строками
-
вызов статических методов происходит через обращение к имени класса: String.Concat(str1, str2) в остальных случаях через обращение к экземплярам класса: str.ToLower()
-
class 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
-
//сравниваем строки без учета регистра result = String.Compare(str3, str4, true); if (result == 0) Console.WriteLine("str3 и str4 равны без учета регистра."); elseConsole.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); } } }
-
-
class Program { // методы разделения строки на элементы Split и слияние массива строк в единую строку Join static void Main() { stringpoems = "тучки небесные вечные странники"; char[] div = { ' '}; //создаем массив разделителей // Разбиваем строку на части, string[] parts = poems.Split(div); Console.WriteLine("Результат разбиения строки на части: "); for (inti = 0; i
-
При работе с объектами класса string нужно учитывать их свойство неизменяемости, т.е. методы изменяют не сами строки, а их копии.
string a=""; for (inti = 1; i
-
Изменяемые строки
Чтобы создать строку, которую можно изменять, в С# предусмотрен класс StringBuilder, определенный в пространстве имен System.Text. Объекты этого класса всегда объявляются с явным вызовом конструктора класса (через операцию new) .
-
static void Main() { try { StringBuilderstr=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(); }
-
-
using 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
-
Регулярные выражения
Регулярное выражение – это шаблон, по которому выполняется поиск соответствующего фрагмента текста. Эффективный поиск в тексте по заданному шаблону; Редактирование текста; Формирование итоговых отчетов по результатам работы с текстом.
-
Метасимволы в регулярных выражениях
Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов. Обычный символ представляет в выражении сам себя, а метасимвол – некоторый класс символов.
-
-
Кроме метасимволов, обозначающие классы символов, могут применяться уточняющие метасимволы:
-
Повторители – метасимволы, которые располагаются непосредственно после обычного символа или группы символов и задают количество его повторений в выражении
-
Регулярное выражение записывается в виде строкового литерала, перед строкой необходимо ставить символ @. Символ @ можно не ставить, если в качестве шаблона используется шаблон без метасимволов. Если нужно найти какой-то символ, который является метасимволом (например, точку), можно это сделать защитив ее обратным слэшем. Т.е. просто точка означает любой одиночный символ, а \. означает просто точку. Примеры регулярных выражений: слово 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"
-
Поиск в тексте по шаблону
Пространство имен библиотеки базовых классов System.Text.RegularExpressions содержит все объекты платформы .NET Framework, имеющие отношение к регулярным выражениям. Класс, поддерживающий регулярные выражения, - класс Regex, он представляет неизменяемые откомпилированные регулярные выражения. Для описания регулярного выражения в классе определено несколько перегруженных конструкторов: Regex() – создает пустое выражение; Regex(String) – создает заданное выражение; Regex(String, RegexOptions) – создает заданное выражение и задает параметры для его обработки с помощью элементов перечисления RegexOptions (например, различать или нет прописные и строчные буквы).
-
Поиск фрагментов строки, соответствующих заданному выражению, выполняется с помощью методов класса Regex: IsMach, Mach, Matches.
-
/*Метод 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 – означает, что регулярное выражение применяется без учеба регистра символов
-
/* Можно использовать конструкцию выбора из нескольких элементов. Варианты выбора перечисляются через вертикальную черту*/ 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)); } } }
-
//есть ли в заданных строках номера телефона в формате 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)); } } }
-
/*Метод 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(); } } } }
-
//подсчитать сумму целых чисел, встречающихся в тексте: 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); } } }
-
/*Метод 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"; RegextheReg = new Regex(@"[-+]?\d+"); MatchCollectiontheMatches = theReg.Matches(text); foreach (Match theMatch in theMatches) { Console.Write("{0} ", theMatch.ToString()); } Console.WriteLine(); } } }
-
Редактирование текста
// метод 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); } } }
-
using 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 { //Разбиение исходного текста на фрагменты: 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); } } }
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.