web-dev-qa-db-ja.com

自動ホットキーで数値と文字列を連結する方法

私は次の自動ホットキースクリプトを持っています:

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

3行目は機能しません。

「57」の出力を期待しています

私は以下を試しました:

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

どれも機能しません

誰かがそれを行う方法を教えてもらえますか?

バージョン1.1.09.04を使用しています

最新バージョン1.1.14.01にアップデートしたばかりで、それでも同じです

12
Graham

式(_:=_)と「通常の」値の割り当て(_=_)を区別します。次の例に示すように、いくつかのアプローチで目標を達成できます。

_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_と評価されます。
[。

24
MCL