zoukankan      html  css  js  c++  java
  • DOS批处理命令-字符串操作

     1、截取字符串

    从指定变量中截取指定位置的字符串,并返回。*这个处理,并不改变变量的值

    语法格式:%变量名:~开始位置,终了位置% 

    注:正数的时候开始位置是从0开始向右计算,负数的时候从1开始向右计算。(跳的个数为指定开始位置的绝对值)

    具体有以下几种截取方式,看实例去理解用法,这个时候,我们假设有一个变量【var】,其值为【1234567890】。

    ①正常路线:

    %var:~5,2% ⇒ 67

    ②无终了:

    %var:~5% ⇒ 67890

    ③负终了:

    %var:~5,-2% ⇒ 678

    ④负开始位置:

    %var:~-6,2% ⇒ 56

    ⑤负开始无终了:

    %var:~-6% ⇒ 567890

    ⑥负开始负终了:

    %var:~-6,-2% ⇒ 5678

    ⑦没有开始:

    %var:~,4% ⇒ 1234

    ⑧无开始无终了:

    %var% ⇒ 1234567890

    正常的情况下,就这几种截取的情况,完全可以根据我们业务的需要,来使用不同的方法来截取字符串。

    这个字符串截取中,还是有几个规律的

    A、开始位置的计算:当开始位置指定为正数的时候,我们就可以从左侧开始查找开始位置(左侧第一个字符为0)

                  当开始位置省略或者为0的时候,开始位置那个字符就是要截取的开始字符。

                  当开始位置指定为负数的时候,我们就可以从右侧开始查找指定位置(右侧第一个字符为-1)

    B、终了位置的计算:当终了位置指定为正数的时候,我们就可以从上述计算得到的终了位置查找终了位置(开始位置为1)

                  当终了位置省略或者为0的时候,字符串的终了位置就是要截取字符串的终了位置

                  当终了位置指定为负数的时候,我们就可以从右侧开始查找指定位置(右侧第一个字符为0)

    C、最终截取的字符串就是开始位置到终了位置之间的字符串(包括开始位置和终了位置)

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    但是,这个字符串截取是不是有异常发生呢?有,也没有。

    当要截取的字符串不为空,并且,要截出的字符串不不能正常截出的时候,返回结果就是空值。

    当要截取的字符串本身就是空的时候,取得结果就是【~开始位置,终了位置】,也就是命令的一部分被返回出来。

    接下来继续讨论这个问题,既然要截取的字符串为空的时候,解出来的东西乖乖的,那我们能不能不让它进去呢?当然,我们使用我们已知的字符串判断函数就是可以的。

    例如下面代码的处理:

    @echo off
    
    set var=
    
    IF DEFINED var (
        echo DEFINED
        echo %var:~1,1%
    ) else (
        echo NOT DEFINED
    )

    运行结果为:

    F: mp>a.bat
    NOT DEFINED

    可见,当var为空的时候,分支根本就没有走进去。程序显然没有走进去,

    当分歧没有进去的时候,在该分歧内,我即使写不合法的命令,也不会报错的,不信你可以试试,反正我是试过了。

    但是,下面这一点,就有点费解了,且看代码:

    @echo off
    
    set var=
    
    IF DEFINED var (
        echo DEFINED
        IF %var:~1,1% EQU A (
            echo true
        )
    ) else (
        echo NOT DEFINED
    )

    这个时候,红色字体部分虽然跑不到,但是,竟然跑不过,所以,我就郁闷了。(报1的使用方法不对。--1 の使い方が誤っています。)

    batch程序的执行方式是什么的?不知道,想知道,但是,又不知道到哪里知道去。

    2、字符串替换

    字符串替换,就是把某一字符串中的特定字符或字符串替换为给定的字符串

    语法结构:%变量名:替换前=替换后%

    替换前不可以为空,但是,替换后可以为空

    还有一点,变换前和变换后不能用变量表示,而变量名只能有变量名来表示。

    例:%var:123=abc%

    3.字符串拼接,直接将两个字符串放到一块儿就可以了。

    例如:字符串123和abc拼接,那么就可以写成123abc

    如果是字符串变量123和abc拼接,那么就可以写成%123%%abc%

    4、字符串查找,例如,查找字符串345在字符串123456789123456789中位置

    哈哈,这个我还不知道,以后知道了再补上去。如果系统没有给出方法的话,就只能写方法查找了。

  • 相关阅读:
    大厂的面试官是如何挑人的?
    搞懂这7个Maven问题,带你吊打面试官!
    Spring Cloud Eureka 注册安全一定要做到位!
    09 webpack的介绍
    08 node.js 的使用
    07 Node.js安装及环境配置
    06-Nodejs介绍
    05-面向对象
    Mysql 的使用方法
    04-对象的单体模式
  • 原文地址:https://www.cnblogs.com/gekal/p/3223517.html
Copyright © 2011-2022 走看看