windows批处理之一:字符串处理

好久没有写技术类的篇目了,这两天刚刚好有点收获,记录一下,以备后忘。
      我们知道,在几乎所有的编程语言中,都会有关于字符串操作的函数。对于字符串截取这种最常用的字符串操作,sql中、c中、awk中都提供了substr这个函数,而在shell中,则有一种另外形式的“函数”,${str:pos:len},含义一看就明白,跟substr很相似吧。但是,我们这里要说的不是编程语言,也不是shell,而是windows下的批处理脚本。
      Windows的批处理没有多少的学习过,所以一直都是简单的一些命令堆砌而已。这两天经过一番摸索,学到了一些其他的用法,就比如说上面提到的字符串截取,bat就可以这么处理:
set str=%str:~1,10%
很奇怪的用法,是吧?windows确实够奇怪的,不仅字符串截取类函数搞得很奇怪,连for循环也用的很奇怪,要不是一篇比较好的文章介绍,我还真没想法学习下去。好了,废话少说,先解释一下上面这个命令的含义:
      其实说穿了很简单,就是截取字符串str中,从二个位置开始的,长度为10的字符串。疑?为啥是第二个位置?嘿嘿,是比较奇怪,这个bat的处理跟c语言类似,是从0开始计数的,即0表示第一个位置。
      那么,如果我要截取某个位置以后的全部字符呢?可以这样:
set str=%str:~1%
本质上,跟substr函数一样,所以说,语言只是工具,关键在于有这个思想。只要你了解过其他substr的用法,就能联想到如何将同样的用法用到这里来。
      当然,除了截取字符串,还有替换。假如要替换字符串中的某些字符为其他字符,该怎么做呢?
      下面就是新的用法了:
set str=%str:,t=,tmp_%
什么意思?
      别急,慢慢来。首先,我们从前面的截取用法已经知道,字符串操作的基本用法是,先用前后%引用变量(这个跟shell下的${}真的very的相似啊),然后,以冒号(:)作为操作的开始符,表示我后面就要动手了。接着,如果是一个截取操作,则需要用~来表明开始要进行字符串截取了。如果是一个替换操作,则指明要替换的字符(在这里是“,t”),然后用“=”表示后面将要出现替换为的字符(“tmp_”),这样,一个替换命令就完成了。是不是很简单?赶快实验一下吧,所有bat环境都适用哦~~~。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-680419/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12932950/viewspace-680419/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值