最近寫一個bat批處理腳本的時候赤屋,想獲取第一個指定字符串最后一位所在的索引园骆,網(wǎng)上沒有找到對應的例子陨仅,于是自己寫了個,思路很簡單铝侵,就是將字符串和要獲取指定字符串進行遍歷灼伤。
例:一串字符串: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
::調(diào)用這個方法,傳入字符串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
::判斷傳入第二個參數(shù)要查找的字符是否已經(jīng)遍歷到了結(jié)尾颖侄,如果結(jié)尾了就說明匹配到了
if not "!%2:~%len1%!"=="" (
::判斷第一個傳入的字符串是否已經(jīng)遍歷到了結(jié)尾
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