Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и печать данных из .txt нужна помощь / 14 сообщений из 14, страница 1 из 1
27.02.2014, 14:07
    #38574159
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Здравствуйте форумчане,
Сразу предупреждаю что я уже 8 лет живу в Бельгии и программировать учусь тут, так что если я использую не те термины то строго не судите.

У меня есть небольшая проблема с написанием очередной программы.
Нужно написать программу которая позволяет найти и выбрать текстовый документ в котором хранятся данные. Примерно такого формата: статус/каталог/тип/группа1/группа2/группа3/код/продукт/ISBномер/.... и так далее 60 групп данных(на Нидерландском языке) И вот эти данные хранятся отдельными линиями, ну то есть через энтер.
например:

активный/j/книги/5970///100210/"название книги"/0-201-61592-7/...
активный/j/книги/5993///100228/"название книги"/0-201-61575-1/...

Нужно по названию продукта провести поиск во всём текстовом файле, найти все продукты(группа 8) со словом "inkthervulling" и вывести на экран полное название и цену(16 группа, перед 16 слэшем), после чего распечатать как прайслист с лого и адресом компании.

вот то что у меня уже есть, дальше не получается.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub Button1_Click(sender As Onject, e As EventArgs) Handles Button1_Click
 
Dim rij(50) As string
Dim nofd As New OpenFileDialog
Dim i As Integer
 
nofd.Filter = "Text Files (*.txt)|*.txt"
nofd.InitialDirectory = My.Computer.Filesystem.SpecialDirectories.Desktop
If nofd.ShowDialog <> Windows.Forms.Dialogresult.OK Then Exit Sub
 
Dim myfile As Sting = nofd.FileName
Dim reader As New System.IO.StreamReader(myfile)
Dim lines = system.File.IO.File.ReadAllLines(myfile)
 
For i=0 to lines.Length - 1
If lines(i).Contains("Inkthervulling") Then
rij(i)=lines(i)
End If
Next
 
End Sub



Заранее большое спасибо за ответы и советы.

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
27.02.2014, 14:20
    #38574184
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Строка у тебя уже получена.
Теперь определи динамический массив, и функцией Split подели в него строку, указав разделитель (слэш). После чего просто выводи нужные элементы массива.
...
Рейтинг: 0 / 0
27.02.2014, 14:27
    #38574196
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Но как я понимаю строка у меня слишком большая что бы влезать в ряд:
"Index was outside ther bounds of the array."
...
Рейтинг: 0 / 0
27.02.2014, 14:44
    #38574229
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
c05SepthНо как я понимаю строка у меня слишком большая что бы влезать в ряд:
"Index was outside ther bounds of the array."
Неверно.
Эта ошибка говорит о том, что вы "вылезли" из массива. Количество найденных строк
превысило 50.
...
Рейтинг: 0 / 0
27.02.2014, 14:45
    #38574231
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
c05Septh,

Для создания коллекции найденных строк используйте List
в него можно добавлять без опасений превысить предел.
...
Рейтинг: 0 / 0
27.02.2014, 15:21
    #38574300
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Конечно, микроскоп, но можно еще регексами

типа ^(.*)/(.*)/.../Название книги/.../(.*) $
и далее смотреть группы.

Но это как вариант.
Если речь идет об одноразовом прочтении файла, то File.ReadLines + Split
Если о многоразовом, то File.ReadAllLines + Split => List<string[]>
...
Рейтинг: 0 / 0
27.02.2014, 15:23
    #38574304
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Хорошо спасибо большое, теперь мне нужно разбить данные и вывести 2 нужных элемента.
Как мне найти именно нужные 2 и вывести их?

вот пример одной из найденных строчек:

actief\J\HARDWARE\3016\\\1333275\Inkthervulling HP 351XL, 14ml Kleur\\CATRIDGE EXPERT\01\09\2007\\21\21,95\\\\\\-\\\\\\\\\\\0\5\0\0\15\\\\\100506\Cremdalin BVBA (CXP/The refil Store)\\13.6\EUR\1\\-\-\\-\-\-\-\J\J\\\\

Выделил то что нужно распечатать.

Вы уж простите, я не особо знаком с VB да и когда я шел на эту стажировку мне сказали что я буду чинить технику а не писать программы...
...
Рейтинг: 0 / 0
27.02.2014, 15:35
    #38574328
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
В байсике не сильны.

Код: c#
1.
2.
3.
4.
5.
6.
var lines = File.ReadAllLines(файл).Select(s => s.Split(@"\", StringSplitOptions.None)).ToList();

var line = lines.where(L => L[7] == @"Inkthervulling HP 351XL, 14ml Kleur").FirstOrDefault();

if (null != line)
  console.writeline(line[7], line[15]);


Как то на глаз и без проверки так
...
Рейтинг: 0 / 0
27.02.2014, 15:42
    #38574345
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Мы так вообще сильны только в сборке техники)

не понял вот эту строчку:
var line = lines.where(L => L[7] == @"Inkthervulling HP 351XL, 14ml Kleur").FirstOrDefault();

так как у меня линий +-20 будет и все разные
Но слешей там всегда одинаковое количество, вообще странная база такая, но ничего поделать не могу, базу использовать запретили.
...
Рейтинг: 0 / 0
27.02.2014, 15:50
    #38574358
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
c05SepthМы так вообще сильны только в сборке техники)

не понял вот эту строчку:
var line = lines.where(L => L[7] == @"Inkthervulling HP 351XL, 14ml Kleur").FirstOrDefault();

так как у меня линий +-20 будет и все разные
Но слешей там всегда одинаковое количество, вообще странная база такая, но ничего поделать не могу, базу использовать запретили.

чихать на количество линий, если их не многие тысячи

строка 1) считать файл в список, элементом которого является массив строк
строка 2) найти такой элемент, где 7-ой элемент в массиве имеет название "Inkthervulling HP 351XL, 14ml Kleur"
строка 3) если такой элемент найден, выдать на экран 7 и 15 части этого элемента
...
Рейтинг: 0 / 0
27.02.2014, 16:12
    #38574407
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
Но получается ты определённое название ищешь?
Inkthervulling HP 351XL, 14ml Kleur
Но вторая строка у меня допустим
Inkthervulling HP 352, 25ml Zwart
...
Рейтинг: 0 / 0
27.02.2014, 16:15
    #38574413
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
c05SepthНужно по названию продукта провести поиск во всём текстовом файле, найти все продукты(группа 8) со словом "inkthervulling" и вывести на экран полное название и цену(16 группа, перед 16 слэшем), после чего распечатать как прайслист с лого и адресом компании.

where(L => L[7].Contains("inkthervulling"))
...
Рейтинг: 0 / 0
27.02.2014, 16:27
    #38574433
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
всё спасибо!)
...
Рейтинг: 0 / 0
27.02.2014, 16:28
    #38574435
c05Septh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и печать данных из .txt нужна помощь
можно закрыть тему и всем плюсануть))
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и печать данных из .txt нужна помощь / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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