【问题标题】:How to concatenate a number and a string in auto hotkey如何在自动热键中连接数字和字符串
【发布时间】:2014-02-18 07:37:18
【问题描述】:

我有以下自动热键脚本:

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 还是一样

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

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

    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
    我个人更喜欢数学方法,因为它会产生一个实际的数字而不是一个字符串,这似乎是合乎逻辑的。

    【讨论】:

    猜你喜欢
    • 2022-07-11
    • 1970-01-01
    • 2020-10-17
    • 2012-10-17
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多