|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Выделение числа из текста |
|
|
[решено] Выделение числа из текста
|
Новый участник Сообщения: 6 |
Профиль | Отправить PM | Цитировать Приветствую!
Уважаемые Гуру, подскажите, как можно выделить число из текстовой строки? Строка всегда начинается с символа TAB, затем идет число, причем если более 3-х знаков, то разделяется запятой, далее ENTER и текст с ненужными числами. В данный момент использую извращенный метод: проверку на наличие запятой, помещением строки в открытый блокнот и автоматическое удаление запятой и лишних текстовых знаков. |
|
Отправлено: 21:26, 17-01-2010 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать А можно увидеть образец того, что есть, того что нужно получить и свой скрипт.
|
Отправлено: 21:43, 17-01-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Образец строки:
2,541 В наличии: мало BK500-RS CS кусок скрипта обработки в блокноте: WinActivate("work.txt - Блокнот","") WinWaitActive ("work.txt - Блокнот","") Send("{CTRLDOWN}a{CTRLUP}{DEL}") ; Очистка блокнота Send("{CTRLDOWN}v{CTRLUP}") MouseClick("left", 9, 51, 1, 0) ; Клик в начало Блокнота Send("{DEL}") ; Удаляем ТАб Send("{SHIFTDOWN}") ; Начало выделения цены MouseMove(66,51,1) MouseDown("left") MouseUp("left") Send("{SHIFTUP}") ; Конец выделения цены Send("{CTRLDOWN}c{CTRLUP}") ; Копируем цену обратно в буфер $cena = ClipGet() Обработка если нет запятой, в случае с запятой сначала три клика и удаление запятой. |
Отправлено: 21:58, 17-01-2010 | #3 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Я правильно понял, что из файла с текстом вида
Цитата:
Вы бы скопировали фрагмент Вашего исходного текста и здесь привели. |
|
Отправлено: 22:09, 17-01-2010 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата madmasles:
Изначально текст в буфере, к сожалению на странице форума не отобразился отступ символа ТАБ перед 2,541 |
||
Отправлено: 22:17, 17-01-2010 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать $sText = ClipGet() $sResult = StringRegExpReplace($sText, "(?s)\s+?([0-9,?]*).*", "\1") MsgBox(64, 'Title', $sResult) |
------- Отправлено: 23:59, 17-01-2010 | #6 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать У меня первоначальный вариант был длиннее, плохо разбираюсь в "pattern", но воспользовавшись как всегда идеальной формулой от Creat0R
Цитата Creat0R:
#include <File.au3> $file1 = "1.txt" $file2 = "2.txt" FileOpen($file1, 0) FileOpen($file2, 2) $CountLines = _FileCountLines($file1) For $i = 1 To $CountLines $sText = FileReadLine($file1, $i) $sResult = StringRegExpReplace($sText, "(?s)\s+?([0-9,?]*).*", "\1") If StringLen($sResult) > 0 Then FileWrite($file2, $sResult & @CRLF) EndIf Next FileClose($file1) FileClose($file2) Хочу попробовать то же самое сделать через массив, вроде намного быстрее получается. |
|
Отправлено: 00:30, 18-01-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата madmasles:
$sFile1 = "1.txt" $sFile2 = "2.txt" $hFile1 = FileOpen($sFile1, 0) $hFile2 = FileOpen($sFile2, 2) $i = 0 While 1 $i += 1 $sText = FileReadLine($hFile1, $i) If @error <> 0 Then ExitLoop $sResult = StringRegExpReplace($sText, "\s+?([0-9,?]+).*", "\1") If @extended > 0 Then FileWriteLine($hFile2, $sResult) WEnd FileClose($hFile1) FileClose($hFile2) |
|
------- Отправлено: 01:05, 18-01-2010 | #8 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата madmasles:
Действительно красиво, осталось решить проблему с удалением запятой, попробую поковыряться с функциями. |
|
Отправлено: 01:05, 18-01-2010 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Или так:
$sFile1 = "1.txt" $sFile2 = "2.txt" $sText = FileRead($sFile1) $aResult = StringRegExp($sText, "(?s)\s+?([0-9,?]+)", 3) $hFile2 = FileOpen($sFile2, 2) For $i = 0 To UBound($aResult)-1 FileWriteLine($hFile2, StringReplace($aResult[$i], ",", "")) Next FileClose($hFile2) Цитата u-Art:
|
|
------- Отправлено: 01:31, 18-01-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Поиск числа в .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 |
|