看板 EzHotKey 關於我們 聯絡資訊
我升級Autohotkey1.0 到 1.1 之後,原本的程式有發錯誤 最後才發現 substr 對文字處理有問題 原本的資料檔,是根據字串位置進行拆解. 例如: MotherStr= 台灣口罩....20...G FatherStr= USA_mask....30...0 ChildStr=substr(MotherStr,13,2) SonStr=substr(FatherStr,13,2) 結果沒有辦法順利抓到中間的數字 請問這種情況下,要怎麼調整呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.54.77 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/EzHotKey/M.1580616231.A.A6B.html
panex0845: AHK本身賦值混亂的問題 下面改成 := 就行了 02/03 00:33
LPen: 啊,我打錯了。但這樣,ChildStr 還是不能抓到20 02/03 15:45
panex0845: 應該是中文字符是2byte組成的問題 把檔案編碼從unicode 02/03 16:56
panex0845: 改成ANSI應該就能解決了 02/03 16:56
panex0845: 如果堅持在unicode下 可以試試看這個 取字節長度判斷 02/03 17:58
panex0845: 有沒有中文 https://www.codepile.net/pile/mX9pVwg7 02/03 17:59
panex0845: 如果是要取中間數字 其實我不推薦使用substr 很容易因 02/03 18:07
panex0845: 資料結構改變 例如多一個 . 或是DE_mask少一個字符 02/03 18:08
panex0845: 發生錯誤 如果確定結構都相同的話 也不是不能用就是了 02/03 18:09
shala: StrLen()的結果是多少? 02/03 23:52
LPen: 有個問題如果 UncleStr:=台灣口罩公..20...G 02/04 20:28
LPen: 這樣抓出來的字串就變了。有解嗎? 02/04 20:29
LPen: 我的資料檔是產品名稱12byte,價格2 byte, 後面備註。 02/04 20:32
shala: ChildStr=substr(MotherStr,17,2) 02/04 22:31
shala: 就會抓到了價格了 02/04 22:31
panex0845: 樓上一半不對 因為AHK賦值問題 會把substr視為字串 而 02/04 23:14
panex0845: 且還要在那邊慢慢數 1 2 3 4 5 6 價格位置是17 有2位數 02/04 23:15
panex0845: 不如直接自訂一個function去抓價格比較實際 02/04 23:18
panex0845: https://www.codepile.net/pile/9ZG9OA4N 02/04 23:18
panex0845: https://i.imgur.com/tBtLrUq.png 02/04 23:20
panex0845: 而且慢慢數還數錯位置.... 02/04 23:22
shala: 我傾向用....切出Array來取值 02/04 23:22
shala: 常見的代碼編輯軟體都會數,不用人工數啦 02/04 23:25
panex0845: 可是價格位置17就不知道是怎麼數出來的了 應該是13或9 02/04 23:29
LPH66: 17 我猜是五個 UTF-8 中文字+兩點 (也就是誤解原 PO 編碼) 02/05 02:12
LPen: 謝謝P大熱心提供範例。可以解決大部分問題。 02/05 23:20
LPen: 我是用來解析報表檔的資料。部分資料有佔滿12byte的。 02/05 23:29
LPen: 這大概就只能手動了。 02/05 23:30
panex0845: 如果資料結構固定 可以嘗試這個 應該可以有效解決問題 02/06 01:15
panex0845: https://www.codepile.net/pile/BOXGepm3 02/06 01:15
papple23g: 提供一個正則表示法的解法 03/13 14:01
papple23g: RegExMatch(MotherStr,"\.*(\d+)\.*",price) 03/13 14:01
papple23g: MSGBOX % price1 03/13 14:01