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

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

Ответить
Настройки темы
[решено] Поиск числа в .txt

Пользователь


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

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


Помогите настроить поиск. Не знаю, как задать число в стринге+ чтоб заносился в масив.
Ищу в .txt стринг, в котором должнобыть число(1-2500), с обеих сторон обхваченное текстом.
Пример:

$aString = String("число [Не могу задать] помогите")
$sRead = FileRead($file)
$array = StringRegExp($sRead, $aString, 1)

При смене количества знаков не меняется ничего ("число 53 помогите") ("число 153 помогите") ("число 1153 помогите")

Отправлено: 18:52, 05-07-2009

 

Аватара для SyDr

Старожил


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

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


Ээээ... Практически ничего не понятно мне из этого. Возможно, догадался я в чём смысл, а возможно и не догадался:
Код: Выделить весь код
$ExpToSearch = "число\s(\d*)\sпомогите"
$SearchIn = FileRead("File.txt")
$array = StringRegExp($SearchIn, $ExpToSearch, 3)

For $i = 0 To Ubound($array) - 1
	MsgBox(4096, "Number Is", $array[$i])
Next

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин

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

Отправлено: 19:37, 05-07-2009 | #2



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

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


Аватара для proxy

Старожил


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

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


вариант:
Код: Выделить весь код
#include <Array.au3>

Local $sFilePath = @ScriptDir & '\test.txt'
Local $sFileText = @CRLF & FileRead($sFilePath) & @CRLF
;~ $sFileText = StringRegExpReplace ($sFile2Text, "(?:\r\n|[\r\n])", @CRLF); нормализация, может и не нужна

Local $aPattern = String("(?s)(?U).+\n([^\r\n]+\d+[^\r\n]+)\r.+")
Local $aResult = StringRegExp($sFileText, $aPattern, 3)
_ArrayDisplay($aResult)

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Последний раз редактировалось proxy, 05-07-2009 в 20:17.

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

Отправлено: 20:00, 05-07-2009 | #3


Пользователь


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

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


Sylver Dragon,
Понял ты меня правильно, только вот диапазон ещё 1-2500 хочу задать?

З.Ы. Приношу извинения, хотел как можно понятнее поставить вопрос

proxy,
Спасибо. Думаю именно это мне и нужно. Выручил

Отправлено: 20:02, 05-07-2009 | #4


Пользователь


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

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


Не много поспешил с выводами. Проблема осталась не решена.

Ищу стринг с конкретным текстом, диапазоном цифр и занесением цифр в массив.
Пример:
Текст
Жираф весит 1725 киллограм
Первый слон весит 2730 киллограм
Второй слон весит 2350 киллограм

Не получается задать поиск числа в заданном диапазоне, чтобы только оно заносилось в массив:
String("слон весит [1-2500] киллограм") , а в массив "2350"

Помогите пожалуйста.

Отправлено: 00:12, 06-07-2009 | #5


Аватара для proxy

Старожил


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

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


Код: Выделить весь код
#include <Array.au3>

Local   $sFilePath = @ScriptDir & '\test.txt'
Local   $sFileText = @CRLF & FileRead($sFilePath) & @CRLF
;~ $sFileText = StringRegExpReplace ($sFile2Text, "(?:\r\n|[\r\n])", @CRLF); нормализация, может и не нужна

Local   $aPattern = String("(?s)(?U).+\n[^\r\n]+(\d)+[^\r\n]+\r.+")
Local   $aResult = StringRegExp($sFileText, $aPattern, 3)
_ArrayDisplay($aResult, 'Результат всех цифр')

Local   $i, $aResultLimit[1]
Local   $iLimit = 2500
        $aResultLimit[0] = 0

For $i=0 To UBound($aResult)-1
    If $aResult[$i] <= $iLimit Then
        $aResultLimit[0] += 1
        ReDim $aResultLimit[$aResultLimit[0]+1]
        $aResultLimit[$aResultLimit[0]] = $aResult[$i]
    EndIf
Next
_ArrayDisplay($aResultLimit, 'Результат с ограничением')
;~ $aResultLimit[0] - колличество найденных результатов, если нет, то 0

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

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

Отправлено: 01:06, 06-07-2009 | #6


Пользователь


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

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


proxy,
Спасибо тебе за старания и помощ. Суть кода понял. Буду тестить

P.S. Проблема решена

Отправлено: 01:17, 06-07-2009 | #7


Аватара для proxy

Старожил


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

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


Цитата Не флужу:
Спасибо тебе за старания и помощ. Суть кода понял. Буду тестить »
пожалуйста, наслаждайся

Цитата Не флужу:
P.S. Проблема решена »
=>
Цитата:
Настройки темы > "Решено" ? »

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 01:22, 06-07-2009 | #8


Аватара для Centrinar

Старожил


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

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


решено

Последний раз редактировалось Centrinar, 23-07-2010 в 15:49.


Отправлено: 15:37, 23-07-2010 | #9


Аватара для madmasles

Ветеран


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

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


Не флужу,
Можно еще так попробовать:
Код: Выделить весь код
#include <Array.au3>

$sString = 'Жираф весит 1725 кг,' & @CRLF & _
        'Первый слон весит 2730 кг,' & @CRLF & _
        'Второй слон весит 2350 кг,' & @CRLF & _
        'Третий слон весит 2150 кг,' & @CRLF & _
        'Четвертый слон весит 2850 кг,' & @CRLF & _
        'Пятый слон весит 2250 кг,' & @CRLF & _
        'Мешок весит 50 кг,' & @CRLF & _
        'Я вешу 100 кг, Собака весит 20 кг.'
Dim $aResult[1]
$j = 0
$iMin = 1000
$iMax = 2500

$aTemp = StringRegExp($sString, "(\d{1,4})", 3)
For $i = 0 To UBound($aTemp) - 1
    If Number($aTemp[$i]) >= $iMin And Number($aTemp[$i]) <= $iMax Then
        $j += 1
        ReDim $aResult[UBound($aResult) + 1]
        $aResult[$j] = $aTemp[$i]
        $aResult[0] = UBound($aResult) - 1
    EndIf
Next
_ArrayDisplay($aResult, 'Совпадающие числа')

Отправлено: 17:16, 23-07-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Выделение числа из текста u-Art AutoIt 15 18-01-2010 03:07
[решено] Excel, перевод числа во время. Как? Grub Хочу все знать 6 25-11-2009 10:57
[решено] Вставить строчку из одного txt в оределённое место другого txt ZeroCrash AutoIt 7 13-07-2009 07:35
Delphi - [решено] Случайные числа Ruzik Программирование и базы данных 5 13-11-2008 08:22
[решено] Как проверить какие обновления (и до какого числа) интегрированы в Windows? Cobra_1_Stas Автоматическая установка Windows 2000/XP/2003 18 21-06-2007 19:59




 
Переход