View previous topic :: View next topic |
Author |
Message |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 05, 2012 14:27 Post subject: |
|
|
Я просто не могу понять, откуда взялась цифра 4? ПОчему не 1?
И что мы должны отбирать, уникальные номера или уникальные ссылки (строки)? Советую с этим конкретно определиться. |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Sun Aug 05, 2012 14:34 Post subject: |
|
|
по первому 4 потому, что я использую на форме только четыре окна для вывода картинок поэтому если 2 или 3 это гуд а вот более 4 лишнее
второй вопрос
отбирать надо уникальные ссылки -строки! просто чтоб в строке не искать все сходства, достаточно найти схожий уникальный номер |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 05, 2012 14:36 Post subject: |
|
|
Ещё раз: Flasher wrote: | ПОчему не 1? |
Спрашиваю потому, что у меня есть уже готовый каркас для фильтра в похожем скрипте, только по замене, а не собиранию всего в один файл.
2) Это точно не проще, чем сравнивать по всей строке.  |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Sun Aug 05, 2012 14:44 Post subject: |
|
|
ПОчему не 1? не понял вопроса, но если найти первое совпадение и вырезать а потом сохранить в другом документе и так четыре раза -тогда устраивает! |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 05, 2012 14:52 Post subject: |
|
|
astrolit
Я предлагаю методику реализации тут не обсуждать, с этим я сам разберусь. Вырезать там ничего не надо. Для этого коллекция с фильтром создаётся.
Что значит "и так 4 раза"? Может, совпадений больше, чем 4.
Если останется одна (не 2, не 3, не 4) уникальная ссылка, это подходит? Я правильно понял? |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Sun Aug 05, 2012 16:00 Post subject: |
|
|
да, совершено верно, но не хотелось бы потерять другие, если более одной сылки, если найдено пятое и более повторений тогда пятый и более совпадения нужно удалить!
и вот ещё уточнение, уникальные номера имеют размах от
(00000-88869) с шагом 1 |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 05, 2012 16:04 Post subject: |
|
|
astrolit wrote: | но не хотелось бы потерять другие, если более одной сылки | В каком смысле потерять? Мы же строку целиком проверяем. Зачем иметь более одной аналогичной строки?
Под уникальностью всегда понимался один единственный экземпляр, иначе это уже никакая не уникальность.
И ещё важный момент:
Quote: | photos/83/999/87947/821709_740x550.jpg
photos/83/999/87947/821708_740x550.jpg
photos/83/15/88868/829347_740x550.jpg
photos/83/15/88868/829346_740x550.jpg
photos/83/15/88868/829345_740x550.jpg
photos/83/15/88868/829344_740x550.jpg
photos/83/15/88868/829343_740x550.jpg | Эти строки очевидно - разные.
Нужно как-то конкретней описывать условие.. |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Sun Aug 05, 2012 16:22 Post subject: |
|
|
я же приводил пример,
Code: |
photos/83/15/88868/829347_740x550.jpg
photos/83/15/88868/829346_740x550.jpg
photos/83/15/88868/829345_740x550.jpg
photos/83/15/88868/829344_740x550.jpg
photos/83/15/88868/829343_740x550.jpg
^
|
идентификационный номер
|
на каждый идентификационный номер приходится от 2 до 150 ссылок на фотографии. мне же надо не более 4 фото, скажем номер это номер гостиницы и на конкретную гостиницу нужно не более 4 ссылок сохранить
Добавлено спустя 3 минуты:
Flasher wrote: |
И ещё важный момент:
Quote: | photos/83/999/87947/821709_740x550.jpg
photos/83/999/87947/821708_740x550.jpg
photos/83/15/88868/829347_740x550.jpg
photos/83/15/88868/829346_740x550.jpg
photos/83/15/88868/829345_740x550.jpg
photos/83/15/88868/829344_740x550.jpg
photos/83/15/88868/829343_740x550.jpg | Эти строки очевидно - разные.
|
разные но имеют один уникальный номер 88868 и с его упоминанием нужно оставить не более 4 строк, и так перебрать все строки для номеров именно в этой колонке от 00000 до 88868
Last edited by astrolit on Sun Aug 05, 2012 16:31; edited 1 time in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 05, 2012 16:30 Post subject: |
|
|
astrolit wrote: | я же приводил пример | А я спросил
Flasher wrote: | И что мы должны отбирать, уникальные номера или уникальные ссылки (строки)? Советую с этим конкретно определиться. | на что последовал ответ
astrolit wrote: | отбирать надо уникальные ссылки -строки! | Так что я тут умываю руки..
В общем, править результирующий файл я не буду, это задача к ТС не относится. А исходную задачу топика с учётом отбора до 4-х строк по идентификатору реализую чуть позже. |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Sun Aug 05, 2012 16:33 Post subject: |
|
|
ок спасибо, я в свою очередь попробую vb.net |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Aug 05, 2012 16:41 Post subject: |
|
|
astrolit
Гм.. Я пытался разобраться с исходной задачей по html-файлам, но сейчас вижу, что там нужно выполнить ещё какие-то условия. Боюсь ошибиться в раскопках. Можно тут попунктно расписать всю задачу с выделением цветом отсекаемых строк и соотв. расположением идентификатора, чтобы я понимал, что оставлять, где искать и т.д.?
astrolit wrote: | в свою очередь попробую vb.net | vb.net куда функциональней vbs. Если есть успехи в этой области, так, может, и мне не стоит напрягаться?  |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Mon Aug 06, 2012 22:18 Post subject: |
|
|
Code: |
photos/83/999/87947/821713_740x550.jpg
photos/83/999/87947/821712_740x550.jpg
photos/83/999/87947/821711_740x550.jpg
photos/83/999/87947/821710_740x550.jpg
photos/83/999/87947/821709_740x550.jpg
photos/83/999/87947/821708_740x550.jpg
photos/83/15/88868/829347_740x550.jpg
photos/83/15/88868/829346_740x550.jpg
photos/83/15/88868/829345_740x550.jpg
photos/83/15/88868/829344_740x550.jpg |
а хотелось бы так
Code: |
* photos/83/999/87947/821713_740x550.jpg
* photos/83/999/87947/821712_740x550.jpg
* photos/83/999/87947/821711_740x550.jpg
* photos/83/999/87947/821710_740x550.jpg
photos/83/999/87947/821709_740x550.jpg
photos/83/999/87947/821708_740x550.jpg
* photos/83/15/88868/829347_740x550.jpg
* photos/83/15/88868/829346_740x550.jpg
* photos/83/15/88868/829345_740x550.jpg
* photos/83/15/88868/829344_740x550.jpg
| в даном случае звезда маркер, в последствии строки без маркера надо удалить.
да и ещё как правило похожие идут последовательно может как то метить строки вроде первые четыре пометили и переходим к следующей не похожей строке сразу метим её и три последующих и повторяем до конца документа |
|
Back to top |
|
 |
astrolit
Joined: 26 Jul 2012 Posts: 42
|
(Separately) Posted: Tue Aug 07, 2012 03:24 Post subject: |
|
|
ну как говорится сказал сделал,
сработало как нельзя лучше, я так накрутил, что сначала вышел говн код ! Но постепенно всё стало так как было нужно
Code: |
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dict As New Dictionary(Of String, Integer)
Dim cnt As Integer
Dim s As String
Dim o As New System.IO.StreamReader("C:\download\silkfoto.txt")
Dim key As String
s = o.ReadLine() 'первое значение для кей
For i As Integer = 0 To 50 'тут пробегаемся только по первым 50 строчкам
5: s = o.ReadLine()' здесь подбрасываем новое значение для кей
key = Regex.Match(s, "(photos/\d+/\d+/\d+/)", RegexOptions.IgnoreCase).Value
For k As Integer = 1 To 4
'Для каждой строки, key - та часть, по которой нужно сравнивать строки:
If dict.ContainsKey(key) Then cnt = dict.Item(key) + 1 Else cnt = 1
dict.Item(key) = cnt
If cnt < 5 Then 'тут выдает нужные четыре значения
text = o.ReadLine()'маркируем строку
'a.WriteLine(text)
End If
Next
Next
o.Close()
a.Dispose() : a.Close()
End Sub
End Class
|
да, на форму бросаем кнопку |
|
Back to top |
|
 |
|