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

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

Ответить
Настройки темы
[решено] Выделение числа из текста

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


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

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


Приветствую!
Уважаемые Гуру, подскажите, как можно выделить число из текстовой строки?
Строка всегда начинается с символа TAB, затем идет число, причем если более 3-х знаков, то разделяется запятой, далее ENTER и текст с ненужными числами.
В данный момент использую извращенный метод: проверку на наличие запятой, помещением строки в открытый блокнот и автоматическое удаление запятой и лишних текстовых знаков.

Отправлено: 21:26, 17-01-2010

 

Аватара для madmasles

Ветеран


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

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


В 1.txt записал 10000 строк по образцу. Мой первый вариант отрабатывал Time: 79.999 секунд, а вот этот вариант:
Код: Выделить весь код
#include <File.au3>
$aTable = ""
$hFile1 = "1.txt"
$hFile2 = "2.txt"
FileOpen($hFile1, 0)
FileOpen($hFile2, 2)
_FileReadToArray($hFile1, $aTable)
$i = 0

While 1
    $i += 1
    If $i = $aTable[0] Then ExitLoop
    $sResult = StringRegExpReplace($aTable[$i], "(?s)\s+?([0-9,?]*).*", "\1")
    $sResult = StringReplace($sResult, ",", "")
    If @extended > 0 Then FileWriteLine($hFile2, $sResult)
WEnd
FileClose($hFile1)
FileClose($hFile2)
тот же файл обработал за Time: 7.467 секунд! Скорость выше более, чем в 10 раз!
u-Art,
Запятые код тоже убирает, правда двумя формулами, хотя наверняка Creat0R сможет сделать это одной.

Пока писал свое сообщение, появился ответ Creat0R.

Creat0R,
Ваш вариант обработал 10000 строк за Time: 2.442! Просто экстра класс!

Отправлено: 01:34, 18-01-2010 | #11



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

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


Аватара для Creat0R

Must AutoIt


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

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


Цитата madmasles:
вот этот вариант »
Тут неправильное использование функций FileOpen, см. мой последний пример, да и в справку не помешало бы заглянуть.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 01:39, 18-01-2010 | #12


Аватара для madmasles

Ветеран


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

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


Creat0R,
Я правильно понял, что у меня 2 лишних действия: "FileOpen($hFile1, 0)" и "FileClose($hFile1)"?

Отправлено: 01:53, 18-01-2010 | #13


Аватара для Creat0R

Must AutoIt


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

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


Цитата madmasles:
Я правильно понял »
Нет Читайте справку.

Цитата madmasles:
Ваш вариант обработал 10000 строк за Time: 2.442! »
Вот ещё быстрее, по идее:

Код: Выделить весь код
$sFile1 = "1.txt"
$sFile2 = "2.txt"

$sText = FileRead($sFile1)
$aResult = StringRegExp($sText, "\s+?([0-9,?]+)", 3)
$sResults = ""

For $i = 0 To UBound($aResult)-1
    $sResults &= $aResult[$i] & @CRLF
Next

$hFile2 = FileOpen($sFile2, 2)
FileWrite($hFile2, StringStripWS(StringReplace($sResults, ",", ""), 2))
FileClose($hFile2)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 02:00, 18-01-2010 | #14


Аватара для madmasles

Ветеран


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

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


Creat0R,
Ваш последний вариант у меня: Time: 2.351
Предпоследний: Time: 2.331.
Практически одинаково.

По поводу
Цитата Creat0R:
Тут неправильное использование функций FileOpen »
у меня последнее предположение, что я рано открыл файл2, надо после того, как считал в массив файл1. Если это не так, то я Вас очень прошу, объясните что не так.

Отправлено: 02:26, 18-01-2010 | #15


Аватара для Creat0R

Must AutoIt


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

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


Цитата madmasles:
у меня последнее предположение »
Зачем предполагать, ещё раз, и последний раз пишу...

Цитата Creat0R:
Читайте справку »
Это вам же на пользу.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 03:07, 18-01-2010 | #16



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Поиск числа в .txt Не флужу AutoIt 9 23-07-2010 17:16
[решено] Excel, перевод числа во время. Как? Grub Хочу все знать 6 25-11-2009 10:57
Delphi - [решено] Случайные числа Ruzik Программирование и базы данных 5 13-11-2008 08:22
Интерфейс - [решено] Выделение файлов в проводнике. Zalatoy Microsoft Windows Vista 3 02-06-2008 14:17
Выделение текста в Word'е Alexandre Хочу все знать 9 03-07-2003 14:35




 
Переход