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

[原创] 批处理字符截取心得,吐血总结出一口诀!

首先感谢论坛里的这位大侠给我们做了个关于字符截取的演示,
以前我也看过了一些资料中也有讲到字符截取的内容
但是真的对我们这些新手来说 。。。很晕啊
 而且我平时很少研究这东西 想要用的时候不知道咋办 怎么也高不会
幸好前几天对下面照这张表 才算勉强不出错  要是没有这张表又不会了

我凝神细看了N久 我就不信这是东东没有规律的

然后么终于有了这篇帖子

以上是废话 ~~ haha


=======================


第一屏 舍弃

                var=1234567890
%var:~1%        舍弃var的前1位                      234567890      
%var:~2%        舍弃var的前2位                      34567890       
%var:~3%        舍弃var的前3位                      4567890        
%var:~0,1%      舍弃var的前0位之后取1位             1              
%var:~0,2%      舍弃var的前0位之后取2位             12             
%var:~0,3%      舍弃var的前0位之后取3位             123            
%var:~1,1%      舍弃var的前1位之后取1位             2              
%var:~1,2%      舍弃var的前1位之后取2位             23             
%var:~1,3%      舍弃var的前1位之后取3位             234            

%var:~0,-1%     舍弃var的前0位和-1位                123456789      
%var:~0,-2%     舍弃var的前0位和-2位                12345678       
%var:~0,-3%     舍弃var的前0位和-3位                1234567        

%var:~1,-1%     舍弃var的前1位和-1位                23456789       
%var:~1,-2%     舍弃var的前1位和-2位                2345678        
%var:~1,-3%     舍弃var的前1位和-3位                234567         

%var:~2,-1%     舍弃var的前2位和-1位                3456789        
%var:~2,-2%     舍弃var的前2位和-2位                345678         
%var:~2,-3%     舍弃var的前2位和-3位                34567          

~ 波浪号后面的数字:为正数表示舍弃变量的前位;
, 逗号后面的数字为正数表示取变量的舍弃以后的前几位;
, 逗号后面为负数表示舍弃变量的后几位

请按任意键继续. . .  
第二屏 取
                var=1234567890
%var:~-1%       取var的最后1位                      0              
%var:~-2%       取var的最后2位                      90             
%var:~-3%       取var的最后3位                      890            
%var:~-4,1%     从var的倒数4位开始取1位             7              
%var:~-4,2%     从var的倒数4位开始取2位             78             
%var:~-4,3%     从var的倒数4位开始取3位             789            

%var:~-5,1%     从var的倒数5位开始取1位             6              
%var:~-5,2%     从var的倒数5位开始取2位             67             
%var:~-5,3%     从var的倒数5位开始取3位             678            

%var:~-6,1%     从var的倒数6位开始取1位             5              
%var:~-6,2%     从var的倒数6位开始取2位             56             
%var:~-6,3%     从var的倒数6位开始取3位             567            

%var:~-8,-1%    从var的倒数8位开始并舍弃最后-1位    3456789        
%var:~-8,-2%    从var的倒数8位开始并舍弃最后-2位    345678         
%var:~-8,-3%    从var的倒数8位开始并舍弃最后-3位    34567       

               1234567890


==============================
总结1:

%var:~数字%    =        %var:~数字,0%           就是说当逗号后面是0的时候可以省略


总结2:
我们来看其中的 ( 数字 逗号 数字) 部分    即 比如(-6,2)     [要是输入的是中文逗号 那是错误输入,废话]


口诀:                  正数正向右截断,负数反向左截断。
                            左边截断丢左边 ,右边截断丢右边。

口诀中我们称      -6    为         负数  或   左边   (这个数在逗号左边嘛)
                            2   为         正数  或   右边    (这个数在逗号右边嘛)

 正向就是向右, 反向就是向左  , 这是我们的惯性思维 ,不难理解吧。

数据截断为两半后把不要的数据丢弃, (注:是一律丢弃 删除   而不要分什么 取 还是 丢   ,我们一律丢。)

至于丢哪个部分呢?  看口诀,口诀中说了,你这个数字 -6 本来在 逗号左边的, 截断后丢弃左边  ,2 本来在逗号右边的就丢弃右边

先看 -6,   是负数我们往反向向左截断6位,就是     1234,567890    然后看-6在逗号左边就把左边的1234丢弃   剩余567890

再看 2,    是正数我们往正向向右截断2位,就是     56,7890             然后看2在逗号右边就把右边的7890丢弃   剩余56


全部是惯性思维, 一旦理解明白记住,这辈子别想忘了!    哈哈~~   好了 从上表中挑几个试试吧  

菜鸟的总结  要是说的不对  大家别骂  啊      交流交流嘛

正数正向截 负数反向截
左边丢左边 右边丢右边

TOP

原帖由 zqz0012005 于 2009-11-10 23:36 发表
cn-dos上关于字符截取的帖子一坨坨的。。。

%var:~m, n%
m是偏移量,n指定要截取的长度。
“如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度”(参见set /?)
m、 ...


恩 你也说了为什么字符截取的帖子一坨坨的,,, 那到底是为什么呢??、
m是偏移量,n指定要截取的长度。 看过这句话的人谁不知道          所以我在帖子里提都没提

关键是怎么搞才能快速准确的截取,而且永远不忘

这就像小学的时候 很多人都是先背乘法口诀  比如七八五十六      先背出来了    才能知道 7*8=56

可要是不背口诀   他也明明知道5*8=40  就是不知道7*8=56  或者可能还要算好一会  40+8   +8 

而背熟口诀了 还会不知道吗  本来5秒算出来的 而且容易错    现在只要1秒  而且肯定对

相信论坛里也有很多像我一样的菜鸟的 大家总结总结交流交流还是挺好的嘛

[ 本帖最后由 xouou_53320 于 2009-11-11 02:04 编辑 ]

TOP

偏移量其实还好
像c语言里的多维数组才容易出错   从第0个开始,,,,

TOP

注意:是N,不是0
这句话很重要

TOP

返回列表