If Var is [not] Type

检查变量的内容是否为数值, 大写字母或其他.

if Var is Type
if Var is not Type

参数

Var

变量名.

Type

指定以下类型之一:

类型 描述
integer Var 非空且包含不带小数点的纯数值字符串(十进制或十六进制) 时为 true. 允许含有前导和尾随空格和 tab. 字符串可以以加号或减号开始.
float Var 非空且包含浮点数; 即含有小数点的纯数值字符串时为 true. 允许含有前导和尾随空格和 tab. 字符串可以以加号, 减号或小数点开始.
number Var 包含整数或浮点数(上文描述的每种数字) 时为 true.
digit Var 为空或仅包含由 0 到 9 字符组成的数字时为 true. 不允许出现其他字符, 例如后面这些: 空格, tab, 加号, 减号, 小数点, 十六进制数以及 0x 前缀.
xdigit 十六进制数: 除了还允许 A 到 F(大写和小写形式) 字符外, 其他与 digit 相同. [v1.0.44.09+]: 允许使用 0x 前缀.
alpha

Var 为空或仅包含字母时为 true. 如果字符串中含有任何数字, 空格, tab, 标点或其他非字母的字符时则为 false. 例如, 如果 Var 包含一个空格后跟一个字母, 那么它 不会 被看成是 alpha.

[AHK_L 42+]: 如果 StringCaseSense Locale 生效, 则结果依赖于系统区域设置. 否则, 只有 ASCII 字母 A-Z(或 a-z) 被认为是字母.

upper Var 为空或仅包含大写字母时为 true. 如果字符串中含有任何数字, 空格, tab, 标点或其他非大写字母的字符时则为 false.
lower Var 为空或仅包含小写字母时为 true. 如果字符串中含有任何数字, 空格, tab, 标点或其他非小写字母的字符时则为 false.
alnum 除了还允许 0 到 9 的数字外, 其他与 alpha 相同.
space Var 为空或仅包含空白字符时为 true, 其中空白字符包括后面这些字符: 空格(%A_Space%), tab(%A_Tab% 或 `t), 换行符(`n), 回车符(`r), 垂直 tab(`v) 和进纸符(`f).
time

Var 包含有效的日期时间戳时为 true, 其中日期时间戳可以是 YYYYMMDDHH24MISS 格式的全部或开始部分. 例如, 类似 2004 这样的 4 位字符串被视为有效的. 使用 StrLen()StringLen 可以判断是否存在额外的时间部分.

小于 1601 的年份会被视为无效的, 因为操作系统通常不支持它们. 被视为有效的最大年份为 9999.

可以使用单词 DATE 代替 TIME, 效果相同.

备注

"Is" 运算符不支持用于表达式中.

[AHK_L 42+]: 如果没有使用 StringCaseSense Locale, 那么会忽略系统区域设置.

%A_YYYY%, Format(), SetFormat, FileGetTime, IfEqual, If Var [not] in/contains MatchList, If Var [not] between Low and High, StrLen(), IfInString, StringUpper, 区块, Else, StringLen

示例

检查 var 是浮点数还是整数, 并检查它是否是有效的时间戳.

if var is float
    MsgBox, %var% is a floating point number.
else if var is integer
    MsgBox, %var% is an integer.
if var is time
    MsgBox, %var% is also a valid date-time.