[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

浅说字符串偏移位置使用问题

初学批处理,目前水平仅到理解阶段,对于字符偏移问题浅谈下体会.
%str:~x,y%是批处理中提供的引用字符内容的命令.在使用过程中,为了方便,格式方面可以进行些省略.主要想的是关于省略的格式问题.
X代表需要处理的字符的位置编号(即偏移量),Y代表终止位置编号.以一个命令说明.
  1. set str=abcdefg
  2. echo %str:~0,4%
  3. pause>1
复制代码


STR内容为    a    b     c     d     e    f   g    (为了便于说明,将字符间隔开,实际的字符内容就是代码中的abcdefg)
从左起对应    0    1     2    3     4    5  6     (各位置编号)
从右起对应    -7 -6    -5   -4   -3  -2  -1      (各位置编号)
当我们想显示 abcd时,设置命令的标准为%str:~0,4%,简写就是%str:,4%.注意两点,一是"4"前面的逗号一定不能少.二是"4"对应的是f,就是说,终止位的字符不会被包括在显示范围内的.
思考下,是否可以写成%str:~-7,-3%呢?如果4前的逗号少了,会出现什么结果?%str:~0,4%为什么显示的不是bcd,不是abcde,而是abcd呢.
实验完上面的问题,相信你会有些新的体会,明白X,Y代表的变量意义以及系统在取位是的具体情况.那么再深入研究下,对比从右对应和从左对应的位置编号.可以看到,从起是没有0这个位置的,因此%str:~0,0%是不能得到abcdefg的结果,那么%str:~0,-1%不就可以了么?如果这样认为,你要把上面输出abcd的程序再多练习体会.要想得到最后带有最后一个字符的输出,只能是%str:~x%

双引号内为引用楼主一楼部分内容.

"当y为负时, %str:~y%表示获取%str%的后|y|字符(这个可以看做%str:~-|y|,|y|%的简写)
       当y为正时, %str:~y%表示舍弃%str%的前y个字符后剩余的字符(这个很重要,用偏移量+长度的方法不能表示的.)

关于简写:
       x或y其中之一为0时,0可省略. 比如: %str:~0,3%   可简写为 %str:~,3%"
再读这段话,是否有了新的体会?只是楼主说的Y也可以为0我认为是不可以的.%str:~x%的写法并不是Y为0时的一种省略格式,应该属于一种特殊情况.当以标准格式%str:~x,y%写命令时,Y为何值时可以输出最后一个字符,需要各高手说明.

TOP

好文章啊,感谢楼主写出来!!

TOP

返回列表