最近写一个bat批处理脚本的时候,想获取第一个指定字符串最后一位所在的索引,网上没有找到对应的例子,于是自己写了个,思路很简单,就是将字符串和要获取指定字符串进行遍历。
例:一串字符串:This is a test string 查找test并给出最后一个t的索引,查找a并给出a的索引
@Echo off
::启用命令扩展
setlocal enabledelayedexpansion
::设置获取指定字符串中第一个匹配字符串中最后一位的索引
::例:设置为str2为is,则获取第一个is中s所在的位置,索引从1开始
set str1=This is a test string
set str2=is
::调用这个方法,传入字符串str1和要查找的字符串str2。lens是它的返回值
call :getSubIndex str1 str2 lens
if "%lens%"=="" (
echo "没有找到"
)else (
echo "字符串最后一个索引为:%lens%"
)
exit /b
:getSubIndex
setlocal enabledelayedexpansion
:strLen_Loop
set /A len+=1
set /A len1+=0
set /A num=len-1
::判断传入第二个参数要查找的字符是否已经遍历到了结尾,如果结尾了就说明匹配到了
if not "!%2:~%len1%!"=="" (
::判断第一个传入的字符串是否已经遍历到了结尾
if not "!%1:~%num%!"=="" (
if not "!%2:~%len1%!"=="" (
if "!%1:~%num%,1!"=="!%2:~%len1%,1!" (
set /A len1=len1+1
) else (
set /A len1=0
)
goto :strLen_Loop
) else (
endlocal & set %3=%num%
)
)
) else (
endlocal & set %3=%num%
)
exit /b
网友评论