• 字符串截取


    **********************************************
    截取功能统一语法格式为:%a:~[m[,n]]%
    **********************************************
    方括号表示可选,%为变量标识符,a为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m为偏移量(缺省为0),n为截取长度(缺省为全部)


    %PATH:~10,5%  这个什么意思,看例子:

    截取功能例子1:

    @echo off
    set a=bbs.verybat.cn
    set var=%a:~1,2%
    echo %var%
    pause

    执行后,我们会发现只显示了"bs"两个字母,我们的变量%a%的值不是为bbs.verybat.cn吗?
    怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出
    %a:~10,5%就是显示变量a里从11位(偏移量10)开始的5个字符!
    分析set var=%a:~1,2%
      set是命令,var是变量值,a要进行字符操作的变量,"1"从变量"a"第几位开始显示,"2"表示显示几位。
    合起来就是把变量a的值从第2位(偏移量1)开始,把2个字符赋予给变量var
    这样应该明白了吧~

    其他两种语法
    %PATH:~-10%
    %PATH:~0,-2%
    他们也是显示指定变量指定几位的值的意思

    %PATH:~-10% 看例子

    截取功能例子2:

    @echo off
    set a=bbs.verybat.cn
    set var=%a:~-3%
    echo %var%
    pause

    运行结果:.cn
    这个就是把变量a倒数3位的值给变量VAR

    当然我们也可以改成这样
    截取功能例子3:

    @echo off
    set a=bbs.verybat.cn
    set var=%a:~3%
    echo %var%
    pause

    运行显示:.verybat.cn
    这个就是把变量a的从第3位开始后面全部的值给变量VAR

    %PATH:~0,-2%  例子

    截取功能例子4:

    @echo off
    set a=bbs.verybat.cn
    set var=%a:~0,-3%
    echo %var%
    pause

    执行后,我们发现显示的是"bbs.verybat",少了".cn"
    从结果分析,很容易分析出,这是把变量a的值从0位开始,
    到倒数第三位之间的值全部赋予给var

    如果改成这样

    截取功能例子5:

    @echo off
    set a=bbs.verybat.cn
    set var=%a:~2,-3%
    echo %var%
    pause

    运行显示:s.verybat
    那么他就是显示从第3位(偏移量2)开始减去倒数三位字符的值,并赋予给变量var

    讲得好,例子就是说明问题,为便于记忆,龙卷风小节如下:

    a=bbs.verybat.cn
    %a:~1,2%   =“bs”   偏移量1,从第二位开始向右取2位
    %a:~-3%    =“.cn”  偏移量负3,即倒数3位(也可理解为留下右边3位),右取全部
    %a:~3%     =“.verybat.cn” 偏移量3(也可理解为去掉左边3位),右取全部
    %a:~0,-3%   =“bbs.verybat” 偏移量0,右取长度至负3,即倒数3位
    %a:~2,-3%   =“s.verybat”  偏移量2,右取长度至负3,即倒数3位

    **********************************************
    所以,截取功能统一语法格式为:%a:~[m[,n]]%
    **********************************************
    方括号表示可选,%a%为变量名,不可少,冒号用于分隔变量名和说明部分,符号~可以简单理解为“偏移”即可,m为偏移量(缺省为0),n为截取长度(缺省为全部)
    上面所述用法其实相当于vbs函数mid、left、right
    %a:~0,n%  相当于函数left(a,n)  取左边n位
    %a:~-m%  相当于函数right(a,m) 取右边m位
    %a:~m,n% 相当于函数mid(a,m+1,n) 从m+1位开始取n位
    %a:~m,-n% 相当于函数mid(a,m+1,len(a)-m-n),从m+1位开始,至倒数n+1位
    %a:~m %  相当于函数mid(a,m+1,len(a)-m) 或者right(a,len(a)-m),从m+1位开始取右边全部。

    思考题目:输入任意字符串,求字符串的长度

    参考答案:

    @echo off
    set /p str=请输入任意长度的字符串:
    echo 你输入了字符串:"%str%"
    call :stringlenth "%str%" num
    echo 字符串长度为:%num%
    pause
    exit
    
    :StringLenth
    ::---------字符串长度计算子程序
    ::---------参数%1为字符串(如有空格,请用引号括起来)
    ::---------参数%2为返回变量名称,不能含空格或特殊字符
    ::@echo off
    set theString=%~1
    if not defined theString goto :eof
    set Return=0
    :StringLenth_continue
    set /a Return+=1
    set thestring=%thestring:~0,-1%
    if defined thestring goto StringLenth_continue
    if not "%2"=="" set %2=%Return%
    goto :eof
  • 相关阅读:
    javascript解决方案插件
    vscode前端快速开发插件
    html5新增语义标签
    vscode快捷键大全
    vscode/sublime前端开发快捷键
    vscode自动缩进快捷键
    Android平台OpenGL ES/Assimp/OpenCV/GLM集成说明
    将AOSP源码导入到Android Studio进行查看
    Android OTA升级
    Android构建系统
  • 原文地址:https://www.cnblogs.com/tinaluo/p/8368220.html
Copyright © 2020-2023  润新知