PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
EzHotKey
[AHK-] unicode 下 substr 擷取字串錯誤怎解?
作者:
LPen
(鳥人)
2020-02-02 12:03:49
我升級Autohotkey1.0 到 1.1 之後,原本的程式有發錯誤
最後才發現 substr 對文字處理有問題
原本的資料檔,是根據字串位置進行拆解.
例如:
MotherStr= 台灣口罩....20...G
FatherStr= USA_mask....30...0
ChildStr=substr(MotherStr,13,2)
SonStr=substr(FatherStr,13,2)
結果沒有辦法順利抓到中間的數字
請問這種情況下,要怎麼調整呢?
作者:
panex0845
(胖克æ€)
2020-02-03 00:33:00
AHK本身賦值混亂的問題 下面改成 := 就行了
作者:
LPen
(鳥人)
2020-02-03 15:45:00
啊,我打錯了。但這樣,ChildStr 還是不能抓到20
作者:
panex0845
(胖克æ€)
2020-02-03 16:56:00
應該是中文字符是2byte組成的問題 把檔案編碼從unicode改成ANSI應該就能解決了如果堅持在unicode下 可以試試看這個 取字節長度判斷有沒有中文
https://www.codepile.net/pile/mX9pVwg7
如果是要取中間數字 其實我不推薦使用substr 很容易因資料結構改變 例如多一個 . 或是DE_mask少一個字符發生錯誤 如果確定結構都相同的話 也不是不能用就是了
作者:
shala
(沙羅)
2020-02-03 23:52:00
StrLen()的結果是多少?
作者:
LPen
(鳥人)
2020-02-04 20:28:00
有個問題如果 UncleStr:=台灣口罩公..20...G這樣抓出來的字串就變了。有解嗎?我的資料檔是產品名稱12byte,價格2 byte, 後面備註。
作者:
shala
(沙羅)
2020-02-04 22:31:00
ChildStr=substr(MotherStr,17,2)就會抓到了價格了
作者:
panex0845
(胖克æ€)
2020-02-04 23:14:00
樓上一半不對 因為AHK賦值問題 會把substr視為字串 而且還要在那邊慢慢數 1 2 3 4 5 6 價格位置是17 有2位數不如直接自訂一個function去抓價格比較實際
https://www.codepile.net/pile/9ZG9OA4N
https://i.imgur.com/tBtLrUq.png
而且慢慢數還數錯位置....
作者:
shala
(沙羅)
2020-02-04 23:22:00
我傾向用....切出Array來取值常見的代碼編輯軟體都會數,不用人工數啦
作者:
panex0845
(胖克æ€)
2020-02-04 23:29:00
可是價格位置17就不知道是怎麼數出來的了 應該是13或9
作者:
LPH66
(-6.2598534e+18f)
2020-02-05 02:12:00
17 我猜是五個 UTF-8 中文字+兩點 (也就是誤解原 PO 編碼)
作者:
LPen
(鳥人)
2020-02-05 23:20:00
謝謝P大熱心提供範例。可以解決大部分問題。我是用來解析報表檔的資料。部分資料有佔滿12byte的。這大概就只能手動了。
作者:
panex0845
(胖克æ€)
2020-02-06 01:15:00
如果資料結構固定 可以嘗試這個 應該可以有效解決問題
https://www.codepile.net/pile/BOXGepm3
作者:
papple23g
(逆道者)
2020-03-13 14:01:00
提供一個正則表示法的解法RegExMatch(MotherStr,"\.*(\d+)\.*",price)MSGBOX % price1
繼續閱讀
[AHK-] 這句codes是什麼意思?
shala
[-AI-] _ProcessListProperties()程序的相關資訊
GodIsland
[AHK-] 分段落
Rituximab
[AHK-] Send無法觸發小小輸入法
shala
[AHK-] 用來開新分頁點書籤會跑到另一個視窗?[已解決]
neiltsang
Re: [AHK-] LOOP循環
panex0845
[AHK-] LOOP循環
noirskakashi
Re: [AHK-] 數字鍵模擬滑鼠鍵
panex0845
[AHK-] 數字鍵模擬滑鼠鍵
gochiaai
[請問] 按鍵精靈啟動LINE無法拖曳檔案到聊天室
th
Links
booklink
Contact Us: admin [ a t ] ucptt.com