Версия AutoIt: 3.
Описание:
Запарился уже. Нужно вот из такого файла выцепить поотдельности всю информацию, т.е. "Название", улицу, телефон, мыло, сайт.
[box title=TitleBox]
Василек, магазин
-------------------------------------------------------------------------------
пр-кт Победы 27
42-63-73
42-04-88
ул. Рахманинова 38г
Спар, сеть супермаркетов
-------------------------------------------------------------------------------
www.spar.ru
[email protected]
ул. Ладожская 111а
40-53-33
пр-кт Строителей 33
44-37-91
ул. Карпинского 39
42-49-10
[/box]
Примечания:
Я наваял вот такой код, но все дело тормознулось на определении телефона. Не подскажите, как довести до ума мой скриптик ? Буду очень благодарен.
Добавлено:
Собственно говоря проблема решена (написал топорным методом) буду рад если кто нибудь оптимизирует или перепишет код по своему.
Описание:
Запарился уже. Нужно вот из такого файла выцепить поотдельности всю информацию, т.е. "Название", улицу, телефон, мыло, сайт.
[box title=TitleBox]
Василек, магазин
-------------------------------------------------------------------------------
пр-кт Победы 27
42-63-73
42-04-88
ул. Рахманинова 38г
Спар, сеть супермаркетов
-------------------------------------------------------------------------------
www.spar.ru
[email protected]
ул. Ладожская 111а
40-53-33
пр-кт Строителей 33
44-37-91
ул. Карпинского 39
42-49-10
[/box]
Примечания:
Я наваял вот такой код, но все дело тормознулось на определении телефона. Не подскажите, как довести до ума мой скриптик ? Буду очень благодарен.
Код:
$predpr_f = 0
$who = ", сеть супермаркетов"
$n = 1
$file = FileOpenDialog ("Выберите файл", "C:\", "Text (*.txt)", 1)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file, $n) ; Считываем строки
If @error = -1 Then ExitLoop
if StringInStr ($line, $who) <> 0 Then ; Если попалась $who
$predpr = StringLeft ($line, StringInStr ($line, $who)-1)
$predpr_f = 1 ; Флаг найденности предприятия
MsgBox (0, $predpr_f, $predpr)
EndIf
if StringInStr ($line, "ул.") <> 0 Then ; Если попалась "ул."
$street = StringMid ($line, StringInStr ($line, "ул.")+4) ; Отрезаем слово "ул."
$sPattern="\s*(\d+?\D?)\s*($|\r\n)"
$sReplace=", \1\2"
$sNewText=StringRegExpReplace($street,$sPattern,$sReplace)
If $predpr_f = 1 Then MsgBox(0, $predpr_f, $sNewText)
EndIf
If StringLen ($line) = 0 Then $predpr_f = 0 ; если попалась строка нулевой длины, значит предприяте закончилось, флаг найденности обнуляем
$n+=1
Wend
Добавлено:
Сообщение автоматически объединено:
Собственно говоря проблема решена (написал топорным методом) буду рад если кто нибудь оптимизирует или перепишет код по своему.
Код:
$predpr_f = 0
$who = ", автозаправочные станции (АЗС)"
$n = 1
$file = FileOpenDialog ("Выберите файл", "C:\", "Text (*.txt)", 1)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file, $n) ; Считываем строки
If @error = -1 Then ExitLoop
if StringInStr ($line, $who) <> 0 Then ; Если попалась $who
$predpr = StringLeft ($line, StringInStr ($line, $who)-1)
$predpr_f = 1 ; Флаг найденности предприятия
MsgBox (0, $predpr_f, $predpr)
EndIf
if StringInStr ($line, "ул.") <> 0 Then ; Если попалась "ул."
$street = StringMid ($line, StringInStr ($line, "ул.")+4) ; Отрезаем слово "ул."
$sPattern="\s*(\d+?\D?)\s*($|\r\n)"
$sReplace=", \1\2"
$sNewText=StringRegExpReplace($street,$sPattern,$sReplace)
If $predpr_f = 1 Then MsgBox(0, $predpr_f, $sNewText)
EndIf
if StringInStr ($line, "пр-кт") <> 0 Then ; Если попалась "пр-кт"
$line = StringReplace ($line, "пр-кт", "ул. Проспект ")
$street = StringMid ($line, StringInStr ($line, "ул.")+4) ; Отрезаем слово "ул."
$sPattern="\s*(\d+?\D?)\s*($|\r\n)"
$sReplace=", \1\2"
$sNewText=StringRegExpReplace($street,$sPattern,$sReplace)
If $predpr_f = 1 Then MsgBox(0, $predpr_f, $sNewText)
EndIf
$phone = StringReplace ($line, chr(09), "")
$phone = StringReplace ($phone, " ", "")
If StringIsDigit (StringLeft ($phone, 1)) = 1 Then
If $predpr_f = 1 Then MsgBox (0, StringLen ($phone), $phone)
EndIf
If StringInStr ($line, "www") <> 0 Then ; Если попалась "www."
$www = StringReplace ($line, chr(09), "")
$www = StringReplace ($www, " ", "")
If $predpr_f = 1 Then MsgBox (0, StringLen ($www), $www)
EndIf
If StringInStr ($line, "@") <> 0 Then ; Если попалась "@"
$email = StringReplace ($line, chr(09), "")
$email = StringReplace ($email, " ", "")
If $predpr_f = 1 Then MsgBox (0, StringLen ($email), $email)
EndIf
If StringLen ($line) = 0 Then $predpr_f = 0 ; если попалась строка нулевой длины, значит предприяте закончилось, флаг найденности обнуляем
$n+=1
Wend