# Is 函数

    Result := IsSomething(Value , Mode)

这些函数进行各种检查. 有三类:

- Type: 检查一个值的类型, 或者一个字符串是否可以被解释为该类型的值.
- Misc: 根据给定的值或变量引用, 检查杂项条件.
- String: 检查一个字符串是否符合特定的模式. Value 必须是一个字符串, 否则抛出 TypeError.

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 | 十六进制数字: 与 digit 相同, 但也允许使用字符 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 must have an even number of digits between 4 and 14 (inclusive) to be considered valid. 小于 1601 的年份会被视为无效的, 因为操作系统通常不支持它们. 被视为有效的最大年份为 9999.

## 备注

由于在脚本开始执行之前, 原义数字(如 `128`, `0x7F` 和 `1.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."

dftg