Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Поиск слова в txt затем поиск по маске "(383)" и вывод инфы

Ответить
Настройки темы
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет!

Помогите написать функцию Поиск слова в txt затем поиск по маске "(383)" и вывод инфы в GUI - Имя - номер телефона

Есть текстовик с именами и номерами телефонов, если ищем имя то не всегда сразу , бывает после какого-то комментария имеется номер

Отправлено: 14:59, 27-09-2011

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


rustoss,
Приведите образец текста, в котором искать надо и конкретный результат, который должен быть найден.

Отправлено: 15:01, 27-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


"Ирина Петровна Васильева - нянечка, Уральская 104 8(383)2-56-54-89 "

В окне ввожу фамилию, кнопка получить, и высвечивается Фамилия и номер телефона

Gui как-то так

Код: Выделить весь код
$Gui = GUICreate("Смотрим Номер телефона",  420, 100)  
$Label2 = GUICtrlCreateLabel("Введите имя ", 10, 10, 186, 17) 
$Input2 = GUICtrlCreateInput("", 10, 27, 400, 21) 
$folder2 = GUICtrlCreateButton("Получить", 340, 55, 70, 23) 
$info = GUICtrlCreateLabel ("", 10,60,320,34)

Отправлено: 15:14, 27-09-2011 | #3


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


rustoss,
Попробуйте так:
Код: Выделить весь код
#include <GUIConstantsEx.au3>

$sFile = @ScriptDir & '\TLF.txt'

If Not FileExists($sFile) Then
    MsgBox(16, 'Error', 'No File')
    Exit
EndIf
$sText = FileRead($sFile)
$aFIO = StringRegExp($sText, '([А-Яа-яЁё]+?\h[А-Яа-яЁё]+?\h[А-Яа-яЁё]+?)\h', 3)
If @error Then
    MsgBox(16, 'Error', 'StringRegExp')
    Exit
EndIf
$sFIO = ''
For $i = 0 To UBound($aFIO) - 1
    $sFIO &= $aFIO[$i] & '|'
Next
$aFIO = 0

GUICreate('Смотрим Номер телефона', 420, 100)
GUICtrlCreateLabel('Выберите имя', 10, 10, 186, 17)
$nCombo = GUICtrlCreateCombo('', 10, 27, 400, 21)
GUICtrlSetData(-1, $sFIO)
$nGet = GUICtrlCreateButton('Получить', 340, 55, 70, 23)
$nTLF = GUICtrlCreateLabel('', 10, 60, 320, 34)
GUISetState()
$sFIO = ''
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nCombo, $nGet
            $sSearch = GUICtrlRead($nCombo)
            If $sSearch Then
                $sNum = StringRegExpReplace($sText & @CRLF, '(?s).*?' & $sSearch & '.*?(\d\(\d{3}\).*?\d)\r?\n.*', '\1')
                If @extended = 1 Then
                    GUICtrlSetData($nTLF, $sNum)
                EndIf
            EndIf
    EndSwitch
WEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:29, 27-09-2011 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Отлично!!!!!

Работает только с русским языком

Отправлено: 17:00, 27-09-2011 | #5


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата rustoss:
Работает только с русским языком »
Цитата rustoss:
"Ирина Петровна Васильева - нянечка, Уральская 104 8(383)2-56-54-89 " »
А где в примере текста другой?

Отправлено: 17:16, 27-09-2011 | #6


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


нету согласен, просто в контактах есть,


вот сейчас экспериментирую, но темный лес....

это
$aFIO = StringRegExp($sText, '([A-Za-z]+?\h[A-Za-z]+?\h[A-Za-z]+?)\h', 3)
ФИО переписал [A-Za-z] как совместить еще и русский?

тут бы еще понять...
$sNum = StringRegExpReplace($sText & @CRLF, '(?s).*?' & $sSearch & '.*?(\d\(\d{3}\).*?\d)\r?\n.*', '\1')

(\d{3}\) - 3 цифры в скобках?

если переписать все в формат 8(383)2-56-54-89 то находит

есть еще номера 8-800

(383) 2 54-89-72 и по разному записаны

попробую текстовик под один шаблон перебить.

Отправлено: 17:39, 27-09-2011 | #7


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата rustoss:
просто в контактах есть »
Цитата rustoss:
есть еще номера 8-800 »
Я ведь Вас просил образец текста. Дайте все возможные варианты.

Отправлено: 19:11, 27-09-2011 | #8


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Jason
jason345@mail.ru
телефон мобильный
8-909-***-**-**

SBRF
http://sbrf.ru
8-800-555-55-50

Василий
дом
(383) 254-56-89

Мария Степанова
(495) 357-54-12

было бы не плохо если есть сайт у контакта то можно переход по клику, либо клик по мылу для письма

Отправлено: 10:55, 28-09-2011 | #9


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


rustoss,
Попробуйте так:
Код: Выделить весь код
#include <GUIConstantsEx.au3>

Opt('TrayMenuMode', 1)

If WinExists(@ScriptName & '{[/@$@\]}') Then Exit
AutoItWinSetTitle(@ScriptName & '{[/@$@\]}')

$sFile = @ScriptDir & '\TLF.txt'
If Not FileExists($sFile) Then
    MsgBox(16, 'Error', 'No File')
    Exit
EndIf
$sText = FileRead($sFile)
$aFIO = StringRegExp($sText, '([А-ЯЁA-Z].*?)\h[^А-ЯЁA-Z]', 3)
If @error Then
    MsgBox(16, 'Error', 'StringRegExp')
    Exit
EndIf
$sFIO = ''
For $i = 0 To UBound($aFIO) - 1
    $sFIO &= $aFIO[$i] & '|'
Next
$aFIO = 0
GUICreate('Смотрим Номер телефона', 420, 110)
GUICtrlCreateLabel('Выберите имя', 10, 10, 186, 17)
$nCombo = GUICtrlCreateCombo('', 10, 27, 400, 21)
GUICtrlSetData(-1, $sFIO)
$nGet = GUICtrlCreateButton('Получить', 340, 55, 70, 23)
$nTLF = GUICtrlCreateLabel('', 10, 60, 320, 20)
$nLink = GUICtrlCreateLabel('', 10, 80, 320, 20)
GUICtrlSetFont(-1, 10, 800, 6, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUISetState()
$sFIO = ''
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nCombo, $nGet
            $sSearch = GUICtrlRead($nCombo)
            If $sSearch Then
                $sTLF = StringRegExpReplace($sText & @CRLF, '(?s).*?' & $sSearch & '.*?[а-яёa-z]?\h+(\(?\d.*?)\r?\n.*', '\1')
                If @extended = 1 Then

                    GUICtrlSetData($nTLF, StringStripWS($sTLF, 8))
                EndIf
            EndIf
            If StringRegExp($sText, $sSearch & '.*?http://.*?\r?\n') Then
                $sLink = StringRegExpReplace($sText, '(?s).*?' & $sSearch & '.*?(http://.*?)\h.*', '$1')
                If @extended = 1 Then
                    GUICtrlSetData($nLink, $sLink)
                    GUICtrlSetCursor($nLink, 0)
                EndIf
            Else
                GUICtrlSetData($nLink, '')
                GUICtrlSetCursor($nLink, -1)
            EndIf
            $sLink = ''
            $sTLF = ''
            $sSearch = ''
        Case $nLink
            $sLink = GUICtrlRead($nLink)
            If $sLink Then
                ShellExecute($sLink)
            EndIf
            $sLink = ''
    EndSwitch
WEnd
Проверял с файлом типа:
Код: Выделить весь код
Jason jason345@mail.ru телефон мобильный 8-909-111-11-11
SBRF http://sbrf.ru  8-800-555-55-50
Василий дом (383) 254-56-89
Мария Степанова 8(495) 357-54-12

Последний раз редактировалось madmasles, 29-09-2011 в 15:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:07, 29-09-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Поиск слова в txt затем поиск по маске "(383)" и вывод инфы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Вместо "Мой компьютер" открывается "Поиск" и др. ZoolooS Лечение систем от вредоносных программ 5 20-06-2008 14:11
Разное - [решено] Вместо "Мой компьютер" или при двойном щелчке на папке открывается "Поиск" ZoolooS Microsoft Windows 2000/XP 4 18-06-2008 16:34
[решено] Закрытие опции "поиск комп. и людей" в start menu search beidgik Microsoft Windows NT/2000/2003 2 14-11-2006 10:37
Поиск в яндекс.xml (выделено из "Зацените сайт!") Vampire Вебмастеру 21 11-09-2006 20:31
В папках вместо файлов отображается сообщение "Чтобы начать поиск..." TempRegistrator Microsoft Windows 2000/XP 1 02-08-2006 08:39




 
Переход