如何在自动热键中连接数字和字符串

时间:2014-01-27 12:46:31

标签: autohotkey

我有以下自动热键脚本:

A:= 5
B := "7"
C := A.B
MsgBox %C%

第三行不起作用。

我期待输出“57”

我尝试了以下内容:

C := %A%.%B%
C := (A).(B)
C := (A.B)
C := (%A%.%B%)
C := (%A%).(%B%)

哪一项都不起作用

谁能告诉我怎么做?

我正在使用版本1.1.09.04

刚刚更新到最新版本1.1.14.01并且仍然相同

1 个答案:

答案 0 :(得分:21)

您区分了表达式(:=)和“正常”值分配(=)。您可以通过多种方法实现目标,如以下示例所示:

a := 5
b := 7
x := 6789

; String concatenation
str1 = %a%%b%
; or as an expression
str2 := a b
; or with explicit concatenation operators
str3 := a . b

; Mathematical "concatenation"

; if b has exactly one digit
val1 := a*10 + b
; for any integer
val2 := a * (10**StrLen(x)) + x ; ** is the "power" operator

msgbox, str1 = %str1%`nstr2 = %str2%`nstr3 = %str3%`nval1 = %val1%`nval2 = %val2%

此代码将打印:

str1 = 57
str2 = 57
str3 = 57
val1 = 57
val2 = 56789

在AHK中,所有这些方法都应该是准等价的:它们产生相同类型的输出。数学方法将变量标记为数字,导致可能的尾随零,您可能希望在显示之前Round()。我们的字符串连接的输出也可以用作数字,因为如果需要,AHK会自动将它们装箱。例如,您可以计算
z := str1 - 1
它将评估为56 我个人更喜欢数学方法,因为它会导致实际数字而不是字符串,这似乎是合乎逻辑的。