Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в текстовом файле / 10 сообщений из 10, страница 1 из 1
04.12.2012, 16:46
    #38064661
asupviking
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
Имеется текстовый файл формата:

02.03.2010: Строка 1
15.04.2010: Строка 2
20.05.2011: Строка 3
...

Необходимо произвести поиск даты в файле, которая берётся из textBox1 и если дата найдена вывести в textBox2 часть строки находящейся справа от двоеточия.
На форуме нашёл только поиск по текстовому файлу на С#, такого вида:

Код: c#
1.
2.
3.
Regex reg = new Regex(textBox1.Text + "-[0-9]+", RegexOptions.IgnoreCase);
MatchCollection math = reg.Matches(File.ReadAllText("D:\\File.txt"));
textBox2.Text = math[0].ToString().Replace(textBox1.Text + "-", "");



адаптировать его на с++ не получается. Помогите пожалуйста, кто знает.
...
Рейтинг: 0 / 0
05.12.2012, 05:17
    #38065468
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
...
Рейтинг: 0 / 0
05.12.2012, 10:29
    #38065661
asupviking
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
фиганыч спасибо, перевёл всё это дело на с++ вот как:

Код: plaintext
1.
2.
3.
Regex^ reg = gcnew Regex(this->textBox1->Text, static_cast<RegexOptions>(RegexOptions::IgnoreCase));
MatchCollection^ math = reg->Matches(File::ReadAllText("C:\\prav_test.txt"));
this->textBox2->Text = math[0]->ToString()->Replace(textBox1->Text, "");



но почему то всё равно поиск не получается, textBox пустой.
...
Рейтинг: 0 / 0
05.12.2012, 12:29
    #38065953
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
asupviking,

хм, походу забыл дать ссылку на самое главное:

Регулярные выражения - википедия
Вот их реализация на .Net
Искать реализацию в этой сишной библиотеке влом - вот здесь всё найдёте сами

по-хорошему это всё надо почитать и тогда вы найдёте решение сами + повысите себе skill и получите level-up, всё-таки регулярка это мощный инструмент

ну а если лень - то можно попробывать так:

Код: plaintext
1.
2.
3.
Regex^ reg = gcnew Regex(this->textBox1->Text + ":.+?\\r\\n", static_cast<RegexOptions>(RegexOptions::IgnoreCase));
MatchCollection^ math = reg->Matches(File::ReadAllText("C:\\prav_test.txt"));
this->textBox2->Text = math[0]->ToString()->Replace(textBox1->Text, "");
...
Рейтинг: 0 / 0
05.12.2012, 12:39
    #38065989
asupviking
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
Хотя нет, он находит подстроку (дату) в строке , а мне нужно что бы он всю строку возвращал, наверное нужно уазать какой-нибудь ключ.
...
Рейтинг: 0 / 0
05.12.2012, 12:43
    #38066002
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
asupviking,

вам здесь не нужен Regex читайте просто первые 10 символов и парсите в дату
...
Рейтинг: 0 / 0
05.12.2012, 12:51
    #38066027
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
pationasupviking,

вам здесь не нужен Regex читайте просто первые 10 символов и парсите в дату

Да и парсить не надо, просто читать и сравнивать с введённым в текстбоксе.
...
Рейтинг: 0 / 0
06.12.2012, 11:06
    #38067485
asupviking
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
фиганыч, всё работает, только я ещё задал кодировку для корректного отображения символов.

Код: plaintext
1.
2.
3.
Regex^ reg = gcnew Regex(this->textBox1->Text + ":.+?\\r\\n", static_cast<RegexOptions>(RegexOptions::IgnoreCase));
MatchCollection^ math = reg->Matches(File::ReadAllText("C:\\prav_test.txt", System::Text::Encoding::Default));
this->textBox2->Text = math[0]->ToString()->Replace(textBox1->Text, "");



Правда здесь возникают две проблемы: если в текстбокс2 вставляется строка, то в в конец строки добавляются два неизвестных символа (? переход на новую строку) и если искомый текст в файле не найден то генерируется исключение.
Два лишних символа в конце строки текстбокса не так страшны, главное обработать исключение если ничего не найдено. Как лучше это сделать: try catch или может условие какое поставить?
...
Рейтинг: 0 / 0
06.12.2012, 14:45
    #38068042
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
math.count>0
...
Рейтинг: 0 / 0
06.12.2012, 16:28
    #38068253
asupviking
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в текстовом файле
Спасибо теперь работает чётко, фиганыч обязательно посмотрю материал, задача решена.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в текстовом файле / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]