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