Распознавание строк

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Распознавание строк

Сообщение jangle » 28.01.2010 (Чт) 16:21

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

Жилой дом 24 этажа улица Яблочкова дом 7 квартира 7
ул. Яблочкова д.7 кв.7
Дом жилой Яблочкова7 к. 7
Жилой дом ул ЯБЛОЧКОВА КВ 7 ДОМ 7


Нужно распознать в этих строчках точный адрес, причем все слова могут быть записаны с ошибками и вперемешку кириллицей и латиницей. :( Что можно предложить для решения такой задачи?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Распознавание строк

Сообщение Денис » 28.01.2010 (Чт) 16:44

К сожалению, в общем случае никак. Я раньше решал такую задачу в два шага:
1. Последовательными заменами привожу список к некоему общему стандарту: например, заменяем "кв ", "квартира " и т.п. на "кв. "
2. Пытаемся парсить преобразованный массив.
Если ш.2 не получается, возвращаемся к ш.1. Рекурсивно. 8)
Даже не владея регэкспами, я приводил к удобочитаемому виду базу адресов, набивавшуюся несколькими поколениями планктона, причем каждое поколение страдало своими грамматическими изъянами. И при этом всём, вручную доводить приходилось адресов 10-20 из полторы тысячи.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 28.01.2010 (Чт) 17:38

Денис писал(а):К сожалению, в общем случае никак. Я раньше решал такую задачу в два шага:
1. Последовательными заменами привожу список к некоему общему стандарту: например, заменяем "кв ", "[b]


Мне кажется эта идея здравой. Приводить строки к промежуточному стандарту:

- удаляем пробелы, скобки, точки, запятые
- приводит к нижнему регистру

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Распознавание строк

Сообщение Хакер » 28.01.2010 (Чт) 19:17

Баян же. Амед уже спрашивал подобное. К чему тогда пришли?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 28.01.2010 (Чт) 20:38

Хакер писал(а):Баян же. Амед уже спрашивал подобное. К чему тогда пришли?


К чему пришли?

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Распознавание строк

Сообщение Roman Koff » 29.01.2010 (Пт) 9:57

ИИ на НС
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 29.01.2010 (Пт) 10:33

Roman Koff писал(а):ИИ на НС


Мне что ИИ прийдется разработать? :)

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Распознавание строк

Сообщение Roman Koff » 29.01.2010 (Пт) 11:02

Нет, чтобы тебе разобрать именно эти стройки, то конечно не прийдется, а в общем смысле да, и потом еще потратить время на обучение системы.
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Распознавание строк

Сообщение qwertyhp » 31.01.2010 (Вс) 19:05

Не понял: речь идёт об оптическом распознавании или же о логическом? Если о логическом: Сначала с номерами домов и т.п. Номер - это числа, а не буквы: делаем парсинг строки, и если ты не IsNumeric - то автоматически превращаешься в пробел. Получаем строку с несколькими числами, разделёнными кучками пробелов. Длина новой строки равна длине исходной, позиции чисел в обеих строках также одинаковы.
Далее.
Номеру дома предшествует название улицы.
Если адреса в пределах одного города - взять список улиц города (по Москве есть, могу выложить). И парсить ИСХОДНУЮ строку СПРАВА-НАЛЕВО на предмет поиска совпадения с названием улицы из списка улиц города. Предварительно всё перевести в один регистр, а транслит типа "a"="а" организовать несложно.
Вот, нашли совпадение: Яблочкова. Теперь все группки цифр, что правее совпадения - это будут дом, корпус (опционально), квартира. Из них дом самый левый, квартира самая правая. В НОВОЙ строке их разделяют только пробелы, позиции других (не пробелов) знаков в строке такие же, как в оригинале: поэтому
ДомКорпусКвартира = Mid$(НОВАЯ строка, [от позиции левее слова Яблочкова]).
ДомКорпусКвартира разделены пробелами. Дом = InStr(ДомКорпусКвартира, " "), и Квартира = InStrRev(ДомКорпусКвартира, " "). То, что посередине - это корпус.

Некоторая сложность в том, что могут быть "1-я улица строителей", "2-я улица строителей", "3-я улица строителей" (я совершенно серьёзно), - которые, к тому же, могут быть записаны как "улица строителей 1-я", "улица строителей 2-я", и т.д. - что, кстати, тоже грамотно. Но в этом случае почти гарантированно присутствие "хвостика" "-я", который и укажет, что число относится всё-таки к названию улицы, а не номеру дома.
Если же нужно оптическое распознавание (с рисунка) - то алгоритм сейчас разрабатывается. Правда, только для шрифтов, подобных "Areal". А попутно вопрос: как цветной рисунок программно сделать чёрно-белым (не монохромным, а именно - чёрно-белым)? Пока пользуюсь сторонним графическим редактором, но в ОСР это ведь не прокатит...
jangle, спасибо за архиватор.
Пятачок Forever! :)

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Распознавание строк

Сообщение Debugger » 31.01.2010 (Вс) 19:25

qwertyhp писал(а):Номеру дома предшествует название улицы.

Вот облом: юзеры могут написать наоборот/записать кроме всего другие числа (например, номер этажа)/вообще не записать какую-то часть данных.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Распознавание строк

Сообщение Roman Koff » 31.01.2010 (Вс) 20:38

qwertyhp писал(а):Если же нужно оптическое распознавание (с рисунка) - то алгоритм сейчас разрабатывается. Правда, только для шрифтов, подобных "Areal".


В нетленку - адназначно ж)))))))))))))))
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 31.01.2010 (Вс) 21:16

qwertyhp писал(а):Если адреса в пределах одного города - взять список улиц города (по Москве есть, могу выложить)


Если это отформатированный список в TXT файле, пожалуйста выложи. И список любых объектов по Москве если есть, ТЭЦ, АТС, заводы и т.д.

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Распознавание строк

Сообщение qwertyhp » 31.01.2010 (Вс) 22:39

Список улиц Москвы выкладываю в архиве. Других объектов нет, но посмотрю в Сети.

2Roman Koff: "...для шрифтов, подобных "Areal". Странно, что вас, вероятно, не удивляет - как это Microsoft сразу не выпустила Windows XP для IBM XT, а начала с Windows 1.0? Вот точно также и в других случаях. От простого - к сложному. От частного - к общему. Если можете предложить алгоритм на уровне, достаточном для перевода в код - предлагайте. А суждения вида "ИИ на НС" - это правильно, а пользы? Человеку нужно решить конкретно задачу. К тому же, подозреваю, что одновременно однотипные задачи решают более одного форумчанина. Поэтому - по-существу. Лучше подскажите - как цветной рисунок программно сделать чёрно-белым (не монохромным, а именно - чёрно-белым)? Опять же - это промежуточная задача, конечная - написать эффективную ОСР.
2Debugger: могут. Юзеры - они такие. Но по-любому, у каждого изврата есть свой логический предел, после которого он просто перестаёт распознаваться. Давайте посмотрим, что мы имеем: название улиц(ы) - с учётом транслита и возможных грамматических ошибок; номера домов и т.п.: последовательность чисел может быть любая, но она должна распознаваться. Например, запись "Расковой 5-1-77" как московский адрес интерпретируется как УЛИЦА+ДОМ+КОРПУС+КВАРТИРА. Если кто-то считает, что это УЛИЦА+ПОДЪЕЗД+ЭТАЖ+код домофона - пусть напишет.
После того, как мы локализовали числа (писал ранее), можно пощупать пространство слева и справа от них. Числу может предшествовать признак адреса - например, слово "дом". Или одна буква "д". Конечно, может быть и запись вида "1-2-3" - и пояснение "корпус, квартира, дом" - но это уже клиника.
Итак, слева и справа от чисел ищем ближайшие слова и смотрим первые буквы. Если "д 7" - это дом. Если "к 5" - это квартира, если "к" одна, и КОРПУС + Квартира, если имеем запись вида " к 5 к 9". В общем случае, следует предусмотреть все формы записи, за пределами которых запись просто перестаёт быть правильной. Например, если пропущена квартира. Да, это ИИ. И подозреваю, что простое решение придёт после неоднократных попыток наиболее полно решить задачу "в лоб".
Вложения
Улицы Москвы.zip
Список улиц Москвы (в т.ч. по округам)
(29.71 Кб) Скачиваний: 59
Пятачок Forever! :)

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Распознавание строк

Сообщение alex77755 » 01.02.2010 (Пн) 5:47

Как-то попадался пример
Код: Выделить всё
'Эта пример конвертирует цветную картинку в черно-белую с коэффицентами принятыми в телевидении.
'На форме необходимо разместить кнопку и 2 PictureBox с именами pic1 и pic2 одинакового размера. Свойство ScaleMode у обоих надо выставить в 3-Pixel. В pic1 загрузите любое изображение и нажмите на кнопку.

Private Sub Command1_Click()
Dim B1 As Byte, B2 As Byte, b3 As Byte
Dim lColor&, x&, y&, Gray
Dim Gra
pic2.Cls
For x = 0 To pic1.ScaleWidth
For y = 0 To pic1.ScaleHeight
lColor = pic1.Point(x, y)
B1 = lColor And &HFF 'Красный
B2 = (lColor \ 256) And &HFF 'Зеленый
b3 = (lColor \ 65536) And &HFF 'Синий

Gray = B1 * 0.3 + B2 * 0.59 + b3 * 0.11
lColor = RGB(Gray, Gray, Gray)
pic2.PSet (x, y), lColor

Next y
DoEvents
Next x
End Sub

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Распознавание строк

Сообщение qwertyhp » 01.02.2010 (Пн) 7:17

2 alex77755: спасибо, всё работает!
Пятачок Forever! :)

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Распознавание строк

Сообщение qwertyhp » 01.02.2010 (Пн) 8:25

Вот транслит плюс ошибки набора:

Код: Выделить всё
Select Case Tmp ' буква, возникшая в результате парсинга строки
' Tmp1 [2],[3]  ' различные варианты прочтения латинского символа как кириллического
    Case "a"
        Tmp1 = "а"
    Case "b"
        Tmp1 = "б"
        Tmp2 = "в"
        Tmp3 = "6"
    Case "c"
        Tmp1 = "с"
        Tmp2 = "ц"
    Case "d"
        Tmp1 = "д"
    Case "e"
        Tmp1 = "е"
    Case "f"
        Tmp1 = "ф"
    Case "g"
        Tmp1 = "г"
        Tmp2 = "ж"
    Case "h"
        Tmp1 = "х"
    Case "i"
        Tmp1 = "и"
    Case "j"
        Tmp1 = "ж"
    Case "k"
        Tmp1 = "к"
    Case "l"
        Tmp1 = "л"
        Tmp2 = "1"
    Case "m"
        Tmp1 = "м"
    Case "n"
        Tmp1 = "н"
        Tmp2 = "п"
    Case "o"
        Tmp1 = "о"
        Tmp2 = "0"
    Case "p"
        Tmp1 = "п"
        Tmp2 = "р"
    Case "q"
        Tmp1 = ""
    Case "r"
        Tmp1 = "р"
    Case "s"
        Tmp1 = "с"
    Case "t"
        Tmp1 = "т"
    Case "u"
        Tmp1 = "и"
        Tmp2 = "у"
        Tmp3 = "ю"
    Case "v"
        Tmp1 = "в"
    Case "w"
        Tmp1 = "в"
    Case "x"
        Tmp1 = "х"
    Case "y"
        Tmp1 = "у"
        Tmp2 = "ю"
    Case "z"
        Tmp1 = "з"
' для случая не слишком грамотных (вместо "сделать" - "зделать", и т.п.)
        Tmp2 = "с"
End Select
Пятачок Forever! :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Распознавание строк

Сообщение alibek » 01.02.2010 (Пн) 9:15

qwertyhp, не нужно советовать такой код. Он глупый и неграмотный. Ну и в целом бесполезный для практического применения.
Lasciate ogni speranza, voi ch'entrate.

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Распознавание строк

Сообщение qwertyhp » 01.02.2010 (Пн) 9:27

2alibek: Мы все будем очень признательны за умный и грамотный код, полезный для практического применения, который будет решать задачу коррекции очепяток и которым Вы, не сомневаюсь, в самое ближайшее время сможете нас порадовать.
Просто переведите Ваш комментарий с русского на MS Visual Basic 6.0, и всё - "звёздочки в студию!" (ах, да, всего-то два ряда...) А я - я таки просто выложил АЛГОРИТМ коррекции (как я его вижу), а не писал Пятое Евангелие.
Последний раз редактировалось qwertyhp 01.02.2010 (Пн) 11:45, всего редактировалось 3 раз(а).
Пятачок Forever! :)

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Распознавание строк

Сообщение Roman Koff » 01.02.2010 (Пн) 10:11

2qwertyhp - вероятно никогда не слышал о таком известном пакете как ABBYY FineReader (и вообще о технологии Optical Character Recognition) ...
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 01.02.2010 (Пн) 10:14

qwertyhp писал(а):Список улиц Москвы выкладываю в архиве. Других объектов нет, но посмотрю в Сети.


За список улиц большое спасибо! Это действительно ценная и нужная информация :)

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Распознавание строк

Сообщение MIT » 01.02.2010 (Пн) 10:16

qwertyhp писал(а):Странно, что вас, вероятно, не удивляет - как это Microsoft сразу не выпустила Windows XP для IBM XT, а начала с Windows 1.0? Вот точно также и в других случаях. От простого - к сложному.
А вот и не правда. Они уже тогда написали и XP и Win7, просто компьютеров, на которых оно бы запустилось тогда прсто не было. Начали они, собственно, с написания NT4, но поскольку работать системе было не на чем, её урезАли и урезАли. В итоге урезали до Windows 1.0, и система наконец запустилась. А исходный, но немного доработанный, вариант NT4 смог запуститься только на компьютерах в районе 2000ого года, откуда и название.
Так-то.
qwertyhp писал(а):Вот транслит плюс ошибки набора:
А зачем этот код? Я что-то не уловил к чему оно тута...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Распознавание строк

Сообщение qwertyhp » 01.02.2010 (Пн) 10:46

Уф-ф-ф... Начнём, пожалуй, с MIT.
По поводу NT4.
"...Windows NT была разработана «с нуля», развивалась отдельно от других ОС семейства Windows (Windows 3.x и Windows 9x)..."
Windows NT 3.1 - первый выпуск 27 июля 1993
Windows NT 3.5 (Daytona) - первый выпуск 21 сентября 1994
Windows NT 3.51 - первый выпуск 30 мая 1995
Windows NT 4.0 - первый выпуск 29 июля 1996 (SP6a - 30 ноября 1999)

За подробностями милости просим на
http://ru.wikipedia.org/wiki/Windows_NT_4
http://ru.wikipedia.org/wiki/Windows_NT
К тому же, Windows х.x - это не ОС, а графическая оболочка - и без DOS не стартует.
Да и из общей эрудиции - посмотрите на адресацию памяти и жестких дисков (а 640 кБайт оперативки долгое время были пределом фантазии, считалось, что дальше 386-х машин конфиг х86 вообще не пойдёт!) - о каких Windows XP или Windows 7 тогда могла идти речь!? Windows XP - это сервис того ОБЩЕДОСТУПНОГО компьютерного железа, о котором в те времена вообще не было даже глюков! Не было стандартов, ничего не было!!! Уважаемый MIT, ну что ж Вы так...
Далее.
"...А зачем этот код? Я что-то не уловил к чему оно тута..."
Он тута, потому что ЧИТАЙ в первом сообщении - "...все слова могут быть записаны с ошибками и вперемешку кириллицей и латиницей."
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
2Roman Koff: Их бин русиш ферштейн нихт. Не андерстенд, то бишь. Есть замечания по существу - на MS Visual Basic 6.0, please.
О "Optical Character Recognition" - в курсе. Но алгоритмы (а они патентованные), как правило, стоят денег и на дороге не валяются, а здесь надо сделать СВОЮ программу (или комплект программ), а не юзать ломаный ABBYY FineReader.
К тому же я так и не понял - задача оптического распознавания стоИт, или нет. В любом случае - она интересна, поэтому будет решаться.
Последний раз редактировалось qwertyhp 01.02.2010 (Пн) 11:00, всего редактировалось 1 раз.
Пятачок Forever! :)

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Распознавание строк

Сообщение Roman Koff » 01.02.2010 (Пн) 11:00

Расслабь свои члены, это была шутка ...
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 01.02.2010 (Пн) 11:00

Для сравнение адресов, необходимо привести их в промежуточный формат, чтобы отсечь 10%-20% ошибок ввода текста.
Вот пример функции.

Код: Выделить всё
Private Function IL_CODE(ByVal txt As String) As String
    Dim out_str As String
    out_str = Replace(txt, Chr$(32), "")
    out_str = Replace(out_str, "-", "")
    out_str = Replace(out_str, ",", "")
    out_str = Replace(out_str, ".", "")
    out_str = Replace(out_str, Chr$(34), "")
    out_str = Replace(out_str, "_", "")
    out_str = Replace(out_str, "(", "")
    out_str = Replace(out_str, ")", "")
    out_str = Replace(out_str, "«", "")
    out_str = Replace(out_str, "»", "")
    out_str = Replace(out_str, "¹", "N") '<-- тут номер заменяем на N
    IL_CODE = LCase$(out_str)
End Function

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Распознавание строк

Сообщение Antonariy » 01.02.2010 (Пн) 11:07

Если уничтожить все пробелы, то количество ошибок только увеличится.
Лучший способ понять что-то самому — объяснить это другому.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 01.02.2010 (Пн) 11:08

Antonariy писал(а):Если уничтожить все пробелы, то количество ошибок только увеличится.


Это еще почему?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Распознавание строк

Сообщение Antonariy » 01.02.2010 (Пн) 11:13

Потомучтогладиолус.
улЛенинад26
Лучший способ понять что-то самому — объяснить это другому.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Распознавание строк

Сообщение jangle » 01.02.2010 (Пн) 11:19

Antonariy писал(а):Потомучтогладиолус.
улЛенинад26


Подумай лучше...

Код: Выделить всё
IL_CODE("ул. Ленина д. 26") -> улленинад26
IL_CODE("ул  Ленина Д 26")  -> улленинад26
IL_CODE("УЛ      ЛЕНИНА   Д 26")  -> улленинад26

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Распознавание строк

Сообщение Antonariy » 01.02.2010 (Пн) 11:23

И чем же "улленинад26" лучше "ул ленина д 26"? Про знаки препинания вопросов нет.
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Распознавание строк

Сообщение Денис » 01.02.2010 (Пн) 11:26

+1
иещекактысплититьстрокубудешьесливнейнеостанетсяващениодногоразделителя?
асплититьстрокупридетсявсеравнонаследующемшаге.

Есть смысл рекурсивно заменить два пробела на один. Например, так:

Код: Выделить всё
    do while not outstr = txt
        out_str = Replace(txt, "  ", " ")
    loop


Или регэкспами, но с ними отец русской демократии не знаком.
Последний раз редактировалось Денис 01.02.2010 (Пн) 11:43, всего редактировалось 2 раз(а).
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

След.

Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, Mail.ru [бот], Yandex-бот и гости: 21

    TopList