AutoHotkey中如何拼接字符串与计算值输出ppp20ggg
AutoHotkey字符串与计算结果拼接问题修正
问题场景
开发中需要拼接字符串和数值计算结果,原代码如下,运行后无法输出预期的ppp20ggg:
global p = "ppp" global level = 4 global g = "ggg" MsgBox %p%%level*5%%g%
错误原因
AutoHotkey传统语法中,%var%格式仅会读取对应名称的变量值,不会解析块内的运算表达式:%level*5%会被识别为读取名称为level*5的变量,不会执行level*5的乘法计算,自然无法得到20的结果。
另外原代码的赋值写法也存在问题:使用传统赋值=时,内容会被原样读取,写的双引号会被当成字符串的一部分,最终输出会带上多余引号。
可直接运行的修正方案
方案1:表达式模式拼接(推荐)
MsgBox后加% (百分号+空格)即可进入表达式模式,该模式下变量不需要加%%包裹,运算会被自动执行,相邻内容会自动拼接。同时统一用表达式赋值符:=,字符串用双引号包裹符合语法规范:
global p := "ppp" global level := 4 global g := "ggg" MsgBox % p level*5 g
运行后弹窗会直接输出ppp20ggg。
方案2:提前存储计算结果
如果习惯传统%var%拼接写法,可以先把计算结果存入单独变量,再做拼接,注意传统赋值=不要给字符串加额外双引号:
global p = ppp global level = 4 global g = ggg calcRes := level * 5 MsgBox %p%%calcRes%%g%
运行后同样可以得到正确输出。
内容的提问来源于stack exchange,提问作者yoer k.
相关产品推荐
相关产品推荐

