Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

c#1_osnovy

.PDF
Скачиваний:
14
Добавлен:
26.03.2016
Размер:
698.93 Кб
Скачать

Пример 1: использование Regex.IsMatch

using System

using System.Text.RegularExpressions;

{

public static void Main()

{string[] txt = { "111-22-33", "111-2-333"}; string reg = @"^\d{3}-\d{2}-\d{2}$"; foreach (string s in txt)

{ if (Regex.IsMatch(s, reg)) Console.WriteLine("{0} номер телефона", s);

else Console.WriteLine("{0} ошибка", s);

}

}

 

}

// 111-22-33 номер телефона

 

// 111-2-333: ошибка

Пример 2: использование Regex.Matches

// совпадения со строкой "abc" в тексте using System;

using System.Text.RegularExpressions;

{

public static void Main()

{string txt = "abc123abc456abc789"; string reg = "abc";

foreach (Match m in Regex.Matches(txt, reg))

Console.WriteLine("нашел {0} с позиции {1}", m.Value, m.Index);

}

}

// нашел abc с позиции 0

 

// нашел abc

с позиции 6

 

// нашел abc

с позиции 12

Пример 3: использование Regex.Matches

// создание экземпляра класса Match string txt = "abc123abc456abc789";

string reg = "abc";

Match m = Regex.Match(txt, reg); while (m.Success)

{ Console.WriteLine("нашел {0} с позиции {1}", m.Value, m.Index); m = m.NextMatch(); }

Пример 5: Разбиение строки на слова (метод Split)

string txt = “cалат – 4руб, борщ – 10руб, чай – 1руб."; string reg = "[ -,.]+";

Regex r = new Regex(reg); string[] words = r.Split(txt);

foreach ( string s in words ) Console.WriteLine(s);

Работа с файлами

Принципы работы с файлами

Чтение (ввод - input) — передача данных с внешнего устройства

в оперативную память, обратный процесс — запись (вывод - output).

Ввод-вывод в C# выполняется с помощью

подсистемы ввода-вывода (IO) и классов библиотеки .NET. Обмен данными реализуется с помощью потоков.

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

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

Обмен с потоком для повышения скорости передачи данных производится, как правило, через буфер.

Буфер выделяется для каждого открытого файла.

Классы .NET для работы с потоками

Уровни обмена с внешними устройствами Выполнять обмен с внешними устройствами можно на уровне:

двоичного представления данных

 

 

BinaryReader,

BinaryWriter;

байтов

FileStream;

 

текста - строк (последовательности символов)

 

 

StreamWriter,

StreamReader.

Доступ к файлам может быть:

последовательным – очередной элемент можно прочитать (записать) только после предыдущего элемента;

произвольным или прямым – выполняется чтение (запись) произвольного элемента по заданному адресу.

Текстовые файлы - только последовательный доступ!

В двоичных и байтовых потоках можно использовать оба метода доступа.

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

Работа с каталогами (папками) и файлами

создание, удаление, перемещение файлов и каталогов, получение свойств…

Используются классы: Directory, DirectoryInfo; File, FileInfo пространства имен System.IO (необходимо подключать)

Пример записи в текстовый файл

string s = "Привет"; int a = 15; int b = 12;

StreamWriter fw = new StreamWriter(D:\\work\\my.txt", true);

// true дозапись, false перезапись

fw.WriteLine("1: Работа с файлом");

// строка 1

fw.WriteLine("2: "+ s);

// строка 2

fw.Write("3: a = " + a); fw.WriteLine(", b = " + b);

// строка 3

fw.WriteLine("4: 'a + b' = " + a + b);

// строка 4

fw.WriteLine("5: a + b = " + (a + b));

// строка 5

fw.Close();

 

 

 

*Варианты:

D:\\work\\my.txt" = @D:\work\my.txt"

Чтение из текстового файла

 

Пример 1: весь файл -> в одну строку

 

try

 

 

 

 

{

StreamReader f = new StreamReader( "text.txt" );

 

string s = f.ReadToEnd();

 

Console.WriteLine(s);

 

f.Close();

}

 

catch(FileNotFoundException ex ) {

 

 

Console.WriteLine( ex.Message );

 

 

Console.WriteLine( "Проверьте имя файла!" ); return;

}

catch

{ Console.WriteLine( "Неопознанное исключение!" );

return; }

Пример 2: Построчное чтение текстового файла

 

 

StreamReader f = new StreamReader( "text.txt" );

 

 

string s;

int i = 0;

 

while ( ( s = f.ReadLine() ) != null ) Console.WriteLine( "{0} : {1}", ++i , s );

f.Close();

Некоторые методы класса DirectoryInfo

Create, CreateSubDirectory Создать каталог или подкаталог

 

по указанному пути в файловой системе

Delete

Удалить каталог со всем его содержимым

GetDirectories

Возвратить массив строк, представляющих все подкаталоги

GetFiles

Получить файлы в текущем каталоге

 

в виде массива объектов класса FileInfo

MoveTo

Переместить каталог и все его содержимое

 

на новый адрес в файловой системе

Parent

Возвратить родительский каталог

Пример 3: Копирование файлов *.jpg из каталога d:\ris в каталог d:\tmp

try {

 

 

string destName = @"d:\tmp\";

 

DirectoryInfo

dir = new DirectoryInfo( @"d:\ris" );

if ( ! dir.Exists )

// проверка существования каталога

{ Console.WriteLine( ”Нет каталога " + dir.Name ); return; }

DirectoryInfo

dest = new DirectoryInfo( destName );

dest.Create();

 

// создание целевого каталога

FileInfo[] files = dir.GetFiles( "*.jpg" );

//список файлов

foreach( FileInfo f in files )

 

f.CopyTo( dest + f.Name );

// копирование файлов

Console.WriteLine( "Скопировано файлов " + files.Length);

}

 

// конец блока try

catch ( Exception e ) {

Console.WriteLine( ”Ошибка: " + e.Message ); }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]