InStr()
在一个字符串中向右或向左搜索指定内容.
FoundPos := InStr(Haystack, Needle [, CaseSensitive = false, StartingPos = 1, Occurrence = 1])
Parameters
- Haystack
被搜索的字符串.
- Needle
需要搜索的字符串.
- CaseSensitive
如果省略 CaseSensitive 参数或指定为false, 搜索时将不区分大小写(不区分的方式取决于 StringCaseSense ) ; 否则会严格匹配大小写.
- StartingPos
如果省略 StartingPos 将默认从1 (Haystack字符串中的位置1)开始搜索. 否则, 指定 2 从第二个字符开始, 3 从第三个字符开始, 依此类推.
如果 StartingPos 超过了字符串 Haystack 的长度会返回 0. [AHK_L 57+]: 如果 StartingPos 指定0或负数会变成从字符串末尾开始的反向搜索 (从右到左).
不管 StartingPos 如何变, 返回值总是相对于 Haystack 中的第一个字符. 例如, "abc" 在 "123abc789" 中的位置总是 4.
- Occurrence [AHK_L 57+]
如果省略 Occurrence 默认返回 Needle 在 Haystack 中的首次匹配位置. 指定 Occurrence 为2返回第二次匹配的位置, 3 返回第三次匹配位置, 依此类推.
返回值
该函数返回出现字符串 Needle 在字符串 Haystack 中的位置. 位置 1 表示第一个字符; 因为 0 和 "false" 为同义词, 使它能提供直觉上 "没找到" 的意义.
备注
这个函数整合了 IfInString 和 StringGetPos 命令, 以及一个简单形式的 RegExMatch().
如果想在一个较大的字符串中搜索一个简单的子字串, 这个函数通常要比 RegExMatch() 来得快.
相关
RegExMatch(), StringGetPos, IfInString, StringCaseSense, if var in/contains MatchList, if var between, if var is type
示例
; 示例 1 MsgBox % InStr("123abc789","abc") ; 返回 4 ; 示例 2 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. ; 示例 3 Haystack := "The Quick Brown Fox Jumps Over the Lazy Dog" Needle := "the" MsgBox % InStr(Haystack, Needle, false, 1, 2) ; 不区分大小写的搜索, 返回第二次匹配的位置 MsgBox % InStr(Haystack, Needle, true) ; 区分大小写的搜索, 返回首次匹配的位置, 结果同上