返回介绍

StringGetPos

发布于 2020-11-08 02:38:03 字数 4682 浏览 1257 评论 0 收藏 0

获取指定的子字符串在某个字符串中的位置。

StringGetPos, OutputVar, InputVar, SearchText [, L#|R#, Offset]
Position := InStr(Haystack, Needle [, CaseSensitive?, StartingPos]) ; 请参阅 InStr() 函数 了解详情.

参数

OutputVar

用来存储获取的相对于 InputVar 首个字符的位置的变量名. StringGetPos 中首个字符的位置为 0, 而 InStr() 中首个字符的位置为 1.

InputVar

内容将被搜索的输入变量名. 不要把名称括在百分号中, 除非您希望使用变量的 内容 作为被解析的变量名.

SearchText

要搜索的字符串. 如果没有启用 StringCaseSense, 那么匹配过程不区分大小写.

L#|R#

SearchTextInputVar 中出现多次时, 此参数决定找到哪个. 如果省略此参数, 那么会从 InputVar 左边开始查找, 直到找到首个匹配. 如果此参数为 1 或字母 R, 那么将从 InputVar 的右边往左开始查找, 直到找到首个匹配.

要查找非首个匹配, 请在字母 L 或 R 后面指定出现位置的编号. 例如, 要找到从右边开始的第四个匹配, 请指定 r4. 注意: 如果编号小于或等于零, 将找不到匹配.

Offset

最左边或最右边 (取决于上面的参数) 需要跳过的字符数. 省略时默认为 0. 例如,后面的语句会从左边的第十个字符开始查找:StringGetPos, OutputVar, InputVar, abc, , 9。此参数可以为 表达式.

ErrorLevel

InputVar 中的指定位置没有找到 SearchTextErrorLevel 被置为 1,否则为 0。

备注

StringMidInStr() 不同, StringGetPos 中首个字符的位置为 0.

获取的位置总是相对于 InputVar 的首个字符, 不受 L"abc", 那么获取的位置总为 3, 而不论查找的参数如何.

如果 SearchText 不存在于 InputVar 中的指定出现位置, 那么 OutputVar 将被置为 -1 且 ErrorLevel 被置为 1.

使用 SplitPath 可以更容易地将文件路径分解为目录, 文件名和扩展名.

内置变量 %A_Space%%A_Tab% 分别包含了单个空格和单个 tab 字符. 当您需要搜索单独的空格或 tab 或在 SearchText 的开始或末尾含有空格或 tab 时, 这很有用.

相关

InStr(), RegExMatch(), IfInString, if var in/contains MatchList, StringCaseSense, StringReplace, SplitPath, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, if var is type

示例

Haystack = abcdefghijklmnopqrs
Needle = def
StringGetPos, pos, Haystack, %Needle%
if pos >= 0
    MsgBox, The string was found at position %pos%.

 

; 示例 #2:
; 把文件的完整路径名分解成各个部分.
; 请注意使用 StringSplit 或
; 解析循环 会更容易, 这里只是为了演示.
FileSelectFile, file, , , Pick a filename in a deeply nested folder:
if file <>
{
    StringLen, pos_prev, file
    pos_prev += 1 ; 改变位置到最后一个字符的后面.
    循环
    {
        ; 从右边开始查找第 N 个匹配:
        StringGetPos, pos, file, \, R%A_Index%
        if ErrorLevel
            break
        length := pos_prev - pos - 1
        pos_prev := pos
        pos += 2  ; 进行调整以便使用 StringMid.
        StringMid, path_component, file, %pos%, %length%
        MsgBox Path component #%a_index% (from the right) is:`n%path_component%
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文