在一个字符串中向右或向左搜索指定内容.
FoundPos := InStr(Haystack, Needle , CaseSensitive, StartingPos, Occurrence)
被搜索的字符串.
需要搜索的字符串.
如果为空或省略, 默认为 0(false). 否则, 指定 1(true) 使搜索区分大小写, 即大小写必须完全匹配. 不区分的方法取决于 StringCaseSense.
如果省略, 默认从 1(Haystack 字符串中的位置 1) 开始搜索. 否则, 指定 2 从第二个字符开始, 3 从第三个字符开始, 依此类推.
如果 StartingPos 超过了字符串 Haystack 的长度会返回 0. [AHK_L 57+]: 如果 StartingPos 为空, 0 或负数, 会变成从字符串末尾开始的反向搜索(从右到左).
不管 StartingPos 如何变, 返回值总是相对于 Haystack 中的第一个字符. 例如, "abc" 在 "123abc789" 中的位置总是 4.
如果省略, 默认为 1(在 Haystack 中的首次匹配的位置). 如果为空, 默认为 0. 否则, 指定 2 返回第二次匹配的位置, 3 返回第三次匹配位置, 依此类推.
该函数返回出现字符串 Needle 在字符串 Haystack 中的位置. 位置 1 表示第一个字符; 因为 0 和 "false" 为同义词, 使它能提供直觉上 "没找到" 的意义.
空字符串(""
) 可以在任何位置出现; 因此, 如果 Needle 是一个空字符串, 返回值为 1. 由于空白的 Needle 通常只会被误传, 因此在 AutoHotkey v2 中会被视为一个错误.
这个函数整合了 IfInString 和 StringGetPos 命令, 以及一个简单形式的 RegExMatch().
RegExMatch() 可用于搜索字符串中的模式(正则表达式), 使其比 InStr() 灵活得多. 然而, 在搜索一个简单的子字符串时, InStr() 通常比 RegExMatch() 快.
RegExMatch(), StringGetPos, IfInString, StringCaseSense, If Var [not] in/contains MatchList, If Var [not] between Low and High, If Var is [not] Type
Haystack := "The Quick Brown Fox Jumps Over the Lazy Dog" Needle := "Fox" If InStr(Haystack, Needle) MsgBox, The string was found. Else MsgBox, The string was not found.