2016-10-23 193 views
0

對不起,我的英語不好。Autoit:使用字符串...提取號碼

StackOverflow是唯一一個真正幫助我解決各種問題的平臺。

始末:(如果你有時間和經驗來幫助我得到一個更好更快的解決方案 我一直在尋找某種語言,使一種機器人的基於瀏覽器的GUI的這是一個完成Site in Flash。所以我失去了很多時間用ImageSearch去按鈕等。我失敗了。

所以我安裝Capture2Text ..與我的自動代碼我構建了一些圖像搜索使用Capture2Text。我標記位置x,y然後啓動C2T並且有一個固定大小然後我得到文本 如果不是這一步重複一點「下」(某些像素下降 - 因爲我lo確定一個帶有文本和圓形按鈕的按鈕:P) 然後標記,如果主要單詞在(StringinStr)中,則查找(getClip)並再次標記。我不確定,如果Capture2Text在剪貼板中獲取整個標記的窗口,因爲它看起來不像左上角的窗口。 而且代碼與睡覺有點快。但由於檢查,直到他在小(像素)步驟中得到正確的按鈕。花了將近一分鐘的時間才找到整個名單。 理解:這個Flashsitze的列表是類似的和網站交換tradng報價。所以它從頭到尾快速整個過程並查看按鈕是否在那裏並不重要。

也許在Flash網站上有一些替代C2T或AutoIT編碼的方法。 我因爲與imagesearch.dll問題,刪除並重新安裝AutoIt的(我不是能安裝的話,我想 - 我犯規的工作)

短篇小說 我使用了AutoIt在Flash網站和獲取信息我需要在剪貼板中使用Capture2Text。 然後我有一些IF代碼看,如果一個特殊的按鈕是最好的方式,我得到一些文字是這樣的:

XXXXX XXXXXXX 0.20 0.24 Button12 0,21 XXX

「X」是不會變得更長或更短的文本字母(可能很重要?) 現在我需要3個數字 - 讓它們在特殊變量中繼續計算。 可以忽略Button12(也是固定長度)

的解決方案應該是

$ VAR1 = 0,20

$ VAR2 = 0,24

$ Var3 = 0.21

的價值就至少0.20,最高值可以是900,00(所以沒有固定長度)

感謝上帝,AutoIt的是少用複雜的變量來計算 - 因此它是讓非常重要價值沒有空間或類似的東西。 我很擅長sql,並且真正用於子字符串解決方案。但我找不到解決方案。但這對我來說非常重要。 如果你不能幫助我,那麼我也必須使用Excel/VBA這個小東西。 我不能相信這是太困難,使用其他程序來處理這個字符串。代碼正在吃掉我所有的內存和CPU沒有Excel。

謝謝! - 我希望你能幫助我!

問候

回答

2

對於給定類型的文本(你的X可以是任何 「字」 字),它的工作原理,以便:

$sText = 'XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX' 

$aMatch = StringRegExp($sText, '\w+\s(\d+,\d+)\s\w+\s(\d+,\d+)\s\w+\s(\d+,\d+)', 3) 
If Not @error Then 
    For $i = 0 To UBound($aMatch) -1 
     ConsoleWrite('Var ' & $i+1 & ': ' & $aMatch[$i] & @CRLF) 
    Next 
EndIf 
0

只是提供一種替代方案:

#include <array.au3> 
$sText = 'XXXXX 0,20 XXXXXXX 0,24 Button12 0,21 XXX' 
$aResult=StringRegExp($sText, " \d{1,3},\d{2} ",3) 
_ArrayDisplay($aResult) 

提取前面1到3位數字的數字,在逗號後面加上2個數字後面的數字(根據你的描述,有一些,但如果你在模式中忽略它們也是有效的)。 「X」字串的長度無關緊要。