Как сохранить нужную строку - ссылку
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
astrolit
Я предлагаю методику реализации тут не обсуждать, с этим я сам разберусь. Вырезать там ничего не надо. Для этого коллекция с фильтром создаётся.
Что значит "и так 4 раза"? Может, совпадений больше, чем 4.
Если останется одна (не 2, не 3, не 4) уникальная ссылка, это подходит? Я правильно понял?
Я предлагаю методику реализации тут не обсуждать, с этим я сам разберусь. Вырезать там ничего не надо. Для этого коллекция с фильтром создаётся.
Что значит "и так 4 раза"? Может, совпадений больше, чем 4.
Если останется одна (не 2, не 3, не 4) уникальная ссылка, это подходит? Я правильно понял?
В каком смысле потерять? Мы же строку целиком проверяем. Зачем иметь более одной аналогичной строки?astrolit писал(а):но не хотелось бы потерять другие, если более одной сылки
Под уникальностью всегда понимался один единственный экземпляр, иначе это уже никакая не уникальность.
И ещё важный момент:
Эти строки очевидно - разные.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
Нужно как-то конкретней описывать условие..
я же приводил пример,
на каждый идентификационный номер приходится от 2 до 150 ссылок на фотографии. мне же надо не более 4 фото, скажем номер это номер гостиницы и на конкретную гостиницу нужно не более 4 ссылок сохранить
Добавлено спустя 3 минуты:
Код: Выделить всё
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
^
|
идентификационный номер
Добавлено спустя 3 минуты:
разные но имеют один уникальный номер 88868 и с его упоминанием нужно оставить не более 4 строк, и так перебрать все строки для номеров именно в этой колонке от 00000 до 88868Flasher писал(а):
И ещё важный момент:Эти строки очевидно - разные.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
Последний раз редактировалось astrolit Вс авг 05, 2012 16:31, всего редактировалось 1 раз.
А я спросилastrolit писал(а):я же приводил пример
на что последовал ответFlasher писал(а):И что мы должны отбирать, уникальные номера или уникальные ссылки (строки)? Советую с этим конкретно определиться.
Так что я тут умываю руки..astrolit писал(а):отбирать надо уникальные ссылки -строки!
В общем, править результирующий файл я не буду, это задача к ТС не относится. А исходную задачу топика с учётом отбора до 4-х строк по идентификатору реализую чуть позже.
astrolit
Гм.. Я пытался разобраться с исходной задачей по html-файлам, но сейчас вижу, что там нужно выполнить ещё какие-то условия. Боюсь ошибиться в раскопках. Можно тут попунктно расписать всю задачу с выделением цветом отсекаемых строк и соотв. расположением идентификатора, чтобы я понимал, что оставлять, где искать и т.д.?

Гм.. Я пытался разобраться с исходной задачей по html-файлам, но сейчас вижу, что там нужно выполнить ещё какие-то условия. Боюсь ошибиться в раскопках. Можно тут попунктно расписать всю задачу с выделением цветом отсекаемых строк и соотв. расположением идентификатора, чтобы я понимал, что оставлять, где искать и т.д.?
vb.net куда функциональней vbs. Если есть успехи в этой области, так, может, и мне не стоит напрягаться?astrolit писал(а):в свою очередь попробую vb.net
Код: Выделить всё
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Код: Выделить всё
* 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
да и ещё как правило похожие идут последовательно может как то метить строки вроде первые четыре пометили и переходим к следующей не похожей строке сразу метим её и три последующих и повторяем до конца документа
ну как говорится сказал сделал,
сработало как нельзя лучше, я так накрутил, что сначала вышел говн
код ! Но постепенно всё стало так как было нужно
да, на форму бросаем кнопку
сработало как нельзя лучше, я так накрутил, что сначала вышел говн
Код: Выделить всё
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