Сортировка по маске вида "XYXY95"

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сортировка по маске вида "XYXY95"

Сообщение ILVI » 25.05.2006 (Чт) 16:41

Интересует такой момент, как его реализовать.
Допустим имею текстовый файл с 6-ти значными числами, записанными одно число на строку от 100000 до 999999.
Как отсортировать все числа, которые подходят под данную маску, как все это реализовать, и впоследствии в файле остались только числа, подходящие под маску.
Т.е. результат должен быть примерно таким:
121295
131395
141495
..........
191995
202095
212195
232395
242495
..........
292995
303095
313195
..........
979795
989895

Помогите, пожалуйста, лучше вместе с кодом, а то я в этом деле новичек совсем.
Последний раз редактировалось ILVI 25.05.2006 (Чт) 16:50, всего редактировалось 3 раз(а).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.05.2006 (Чт) 16:43

Конечный порядок сортировки неясен.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 25.05.2006 (Чт) 16:45

А что тут не ясного, из всего списка чисел, должны остаться только те, которые удовлетворяют маске.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.05.2006 (Чт) 17:00

В первом варианте поста число 212195 стояло выше 131395. Это было непонятно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 25.05.2006 (Чт) 17:01

регулярные выражения :roll:

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 25.05.2006 (Чт) 17:06

Ramzes писал(а):регулярные выражения :roll:


Мне это совсем ни чего не говорит, ребята, будьте чуть терпимее чтоли, я ж говорю, что совсем чайник еще, а вы отвечаете одназначно в одно слово. Мнеб кто помог нормально разобраться, а лучше с примером кода.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 25.05.2006 (Чт) 17:16

MSDN - Это раз
Google - Это два
Яндекс - это три
Программу за тебя писать здесь никто не будет
Вложения
RegEx.rar
Это два
(13.14 Кб) Скачиваний: 72
Последний раз редактировалось Ramzes 25.05.2006 (Чт) 17:26, всего редактировалось 1 раз.

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 25.05.2006 (Чт) 17:21

Ramzes писал(а):Программу за тебя писать здесь никто не будет

За файлик спасибо, а про программу, так я и не прошу писать, может у кого есть какие примеры, а в поисковые системы меня отправлять не надо, на то здесь и форум, чтоб проблемы по этой тематике и решать, а иначе вы и гроша ломанного не стоите вместе с форумам, если считаете, что он только для самых крутых, коем вы и не являетесь

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 25.05.2006 (Чт) 19:27

GSerg
Ramzes
Приветствую.
Мы в школе еще не проходили работу с файлами. В сентябре начнем.
Потому спрашиваю у Вас.
В данном случае можно использовать интерфейс IComparer с функцией Compare(String.Compare)?
Или использование регулярных выражений наиболее рациональный способ.
Заранее спасибо.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 26.05.2006 (Пт) 12:40

Thomas
Во всяком случае это будет гараздо быстрее и легче в разработке (по крайней мере для меня), также я думаю, что смама программа будет работать быстрее при использование RegEx. Потому, что по личному опыту могу сказать, что большинство тормозов программ свзяно со строками :roll:

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 26.05.2006 (Пт) 14:55

Считать в таблицу и обыкновенный SELECT по ней.
Вроде достаточно просто...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 26.05.2006 (Пт) 17:39

Andrey Fedorov писал(а):Считать в таблицу и обыкновенный SELECT по ней.

Это как, не очень понимаю?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.05.2006 (Пт) 17:42

Это просто подход человека, применяющего SQL для сортировки массива (кто-то тут на форуме уже признавался в этом)...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 26.05.2006 (Пт) 17:44

Самый главный вопрос - это как сделать, чтобы цифры сопоставлялись с буквами, ведь Х и У в данном случаи не дожны иметь только одно значение, например, "1", а перебираться от 0 до 9
Последний раз редактировалось ILVI 26.05.2006 (Пт) 17:46, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.05.2006 (Пт) 17:45

Самый главный вопрос - это как понять, откуда вдруг взялись буквы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 26.05.2006 (Пт) 17:49

GSerg писал(а):Самый главный вопрос - это как понять, откуда вдруг взялись буквы.

Так я ведь ввожу определенную маску именно, в таком примерно ввиде как описал, а программа, должна определить, подходит ли значение под эту маску или нет, если нет, то удалить его, если до, то оставить.

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 26.05.2006 (Пт) 17:50

Маску я ввожу в диалоге пользователя в том виде как есть, и она имеет тип строковых данных

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 26.05.2006 (Пт) 17:57

ILVI
ты мне обьясни, чем тебе RegEg не подходит?

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 26.05.2006 (Пт) 18:00

Ramzes писал(а):ILVI
ты мне обьясни, чем тебе RegEg не подходит?

Весь МСДН про нее прочитал, а так толком и не понял, как с ней работать, как под букву подставить число

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.05.2006 (Пт) 18:10

Что, вот это всё прочитал и не понял?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ILVI
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 24.05.2006 (Ср) 10:48

Сообщение ILVI » 26.05.2006 (Пт) 18:19

GSerg писал(а):Что, вот это всё прочитал и не понял?

Не то что не понял , что там, а как это реализовать

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.05.2006 (Сб) 7:00

Ну там подраздел небольшой, про обратные ссылки. Его ещё раз прочитай?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

сесодмин
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 13.05.2006 (Сб) 5:08

Сообщение сесодмин » 05.06.2006 (Пн) 23:02

Sub FilterMask()

Dim line As String

Dim sr As IO.StreamReader = IO.File.OpenText("data.txt") 'Первый файл с всеми числами 100000 - 999999
Dim sw As IO.StreamWriter = IO.File.AppendText("data2.txt") 'Второй файл (маска XYXY95)

Do While sr.Peek <> -1

line = sr.ReadLine

If line.Substring(4, 2) = 95 Then
If line.Substring(0, 1) = line.Substring(2, 1) Then
If line.Substring(1, 1) = line.Substring(3, 1) Then

sw.WriteLine(line)

End If
End If
End If

Loop

sw.Close()
sr.Close()

End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.06.2006 (Вт) 6:36

сесодмин
Каждый раз при смене маски будешь переписывать код?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

сесодмин
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 13.05.2006 (Сб) 5:08

Сообщение сесодмин » 06.06.2006 (Вт) 22:18

Автор вроде писал что маска не меняется.

Если уж очень надо, то можно сделать чар за чаром:

...
If line.Substring(0, 1) = Textbox1.Text _
And line.Substring(1, 1) = Textbox2.Text _
And line.Substring(2, 1) = Textbox3.Text
...

Ну ты понял. Элементарный логический фильтр AND на схожесть всех условий. Для фильтровых задач такого уровня не вижу смысл доставать плагин с регулярными выражениями, тем более что в VB.NET (в отличии от, например, ASP.NET), в основном пакете компонентов такого компонента нет.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.06.2006 (Ср) 6:02

сесодмин писал(а):Автор вроде писал что маска не меняется.

Автор писал "Маску я ввожу в диалоге пользователя в том виде как есть, и она имеет тип строковых данных".


сесодмин писал(а):Ну ты понял. Элементарный логический фильтр AND на схожесть всех условий. Для фильтровых задач такого уровня не вижу смысл доставать плагин с регулярными выражениями, тем более что в VB.NET (в отличии от, например, ASP.NET), в основном пакете компонентов такого компонента нет.

а) Ну напиши "элементарный логический фильтр" для маски, которую вводит пользователь. Посмотрим, насколько элементарным он получится.
б) В vb .net этот... хм... "плагин"... мягко говоря, есть. Равно как во всех остальных местах. Потому что это часть FW.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

сесодмин
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 13.05.2006 (Сб) 5:08

Сообщение сесодмин » 07.06.2006 (Ср) 6:20

GSerg писал(а):а) Ну напиши "элементарный логический фильтр" для маски, которую вводит пользователь. Посмотрим, насколько элементарным он получится.


А я что написал в том же посте? Фильтр на каждую цифру читается с соответсвующего текстбокса, если все буквы в строке совпадают с заданным пользователем цифрой в соответсвующем текстбоксе, линия принимается. Куда уж элементарнее??

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 07.06.2006 (Ср) 9:50

сесодмин писал(а):Для фильтровых задач такого уровня не вижу смысл доставать плагин с регулярными выражениями, тем более что в VB.NET (в отличии от, например, ASP.NET), в основном пакете компонентов такого компонента нет.

Плагин .... :D в ASP есть а в VB нет :lol:
я сейчас упаду, держите меня семеро....вытаскивать...ггггг...отудка....

PS спасибо, ты мне настроение поднял на целый день :thumleft:

temur
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.02.2005 (Чт) 21:17
Откуда: Georgia

Сообщение temur » 07.06.2006 (Ср) 11:46

Ну вот вам без RegEx примерчик. Только не осуждайте сильно. Вроде работает вот только о быстроте мечтать прийдется (наверно)
Вложения
WindowsApplication1.rar
(12.35 Кб) Скачиваний: 72
Последний раз редактировалось temur 07.06.2006 (Ср) 13:22, всего редактировалось 3 раз(а).

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 07.06.2006 (Ср) 11:53

Где он???
Весь мир матрица, а мы в нем потоки байтов!

След.

Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 103

    TopList