Is 函数

用于检查给定值的类型和其他条件的函数.

Result := IsSomething(Value , Mode)

这有三类函数:

Mode 仅对 IsAlpha, IsAlnum, IsUpper 和 IsLower 有效. 默认情况下, 只考虑 ASCII 字母. 要根据当前用户的区域规则执行检查, 请为 Mode 参数指定字符串 "Locale". 也可以通过指定 0 或 1 来使用默认模式.

Type

检查一个值的类型, 或者一个字符串是否可以被解释为该类型的值.

函数 描述
IsInteger 如果 Value 是整数或不带小数点的纯数字字符串(十进制或十六进制), 则为 True. 允许前导和尾随空格和制表符. 该字符串可以以加号或减号开头, 并且不能为空.
IsFloat 如果 Value 是浮点数或包含小数点的纯数字字符串, 则为 True. 允许前导和尾随空格和制表符. 该字符串可以以加号, 减号或小数点开头, 并且不能为空.
IsNumber 如果 IsInteger(Value) or IsFloat(Value) 为 true, 则为 True.
IsObject 如果 Value 是一个对象. 这包括从 Object 派生的对象, 原型对象(如 0.base) 和 COM 对象, 但不包括数字或字符串.

Misc

根据给定的值或变量引用, 检查杂项条件.

函数 描述
IsLabel 如果 Value 是当前作用域中定义的标签的名称, 则为 True.
IsSet 如果变量 Value 已经被赋值, 则为 True.
IsSetRef 如果 Value 所包含的 VarRef 已经被赋值, 则为 True.

String

检查字符串是否符合特定的模式. Value 必须是一个字符串, 否则抛出 TypeError.

函数 描述
IsDigit 如果 Value 是一个正整数, 一个空字符串, 或仅包含字符 0 到 9 的字符串, 则为 True. 不允许使用其他字符, 例如以下字符: 空格, 制表符, 正号, 负号, 小数点, 十六进制数字, 以及 0x 前缀.
IsXDigit 十六进制数字: 与 IsDigit 相同, 但也允许使用字符 A 到 F(大写或小写). 如果存在前缀 0x, 则可以接受.
IsAlpha

如果 Value 是字符串, 可以为空字符串或仅包含字母字符. 如果字符串任意位置有任何 digit, 空格, 制表符, 标点或其他非字母的字符时, 则为 False. 例如, 如果 Value 包含一个空格后跟字母, 则 不被 视为 alpha.

默认情况下, 只考虑 ASCII 字母. 如果要根据当前用户的区域规则来执行检查, 请使用 IsAlpha(Value, "Locale").

IsUpper

如果 Value 是字符串, 可以为空字符串或仅包含大写字母字符, 则为 True. 如果字符串任意位置有任何 digit, 空格, 制表符, 标点或其他非大写字母的字符时, 则为 False.

默认情况下, 只考虑 ASCII 字母. 如果要根据当前用户的区域规则来执行检查, 请使用 IsUpper(Value, "Locale").

IsLower

如果 Value 是字符串, 可以为空字符串或仅包含小写字母字符, 则为 True. 如果字符串任意位置有任何 digit, 空格, 制表符, 标点或其他非小写字母的字符时, 则为 False.

默认情况下, 只考虑 ASCII 字母. 如果要根据当前用户的区域规则来执行检查, 请使用 IsLower(Value, "Locale").

IsAlnum 除了还允许 0 到 9 的数字外, 其他与 IsAlpha 相同.
IsSpace 如果 Value 是字符串, 可以为空字符串或仅包含下列空白字符: 空格(A_Space 或 `s), 制表符(A_Tab 或 `t), 换行符(`n), 回车符(`r), 垂直制表符(`v) 和进纸符(`f), 则为 True.
IsTime

如果 Value 是有效的日期时间戳, 可以是 YYYYMMDDHH24MISS 格式的全部或开始部分, 则为 True. 例如, 类似 2004 这样的 4 位字符串被视为有效的. 使用 StrLen 确定是否存在其他时间分量.

Value 必须为 4 到 14(包括) 之间的偶数位才被认为有效.

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

备注

由于在脚本开始执行之前, 原义数字(如 128, 0x7F1.0) 会转换为纯数字, 因此原义数字的格式会丢失. 为了避免混淆, 上面列出的字符串函数如果给定一个纯数字, 则抛出异常.

A_YYYY, FileGetTime, If, StrLen, InStr, StrUpper, DateAdd

示例

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

if isFloat(var)
    MsgBox var " is a floating point number."
else if isInteger(var)
    MsgBox var " is an integer."
if isTime(var)
    MsgBox var  " is also a valid date-time."