标题: [文本处理] 批处理如何切割字符串? [打印本页]
作者: qingshancun 时间: 2013-5-15 00:40 标题: 批处理如何切割字符串?
有一个字符串 我把他们用,连接后 怎么让他们重新拆分 如题
字符串:abc def hjg rtd c p QQ
然后我把上面六个连接一起 变成新的字符串 abc def,hjg,rtd,c,p,QQ
我现在需要解决的是 如何重新分开! 注abc def是一个字符串
作者: CrLf 时间: 2013-5-15 01:17
如果不含特殊字符可以用这个简单的:- @echo off
- set "str=abc def,hjg,rtd,c,p,QQ"
- setlocal enabledelayedexpansion
- set str=!str:,=" "!
- ::把 , 替换为分隔符,再用 for 读取
- for %%a in ("!str!") do echo;%%~a
- pause
复制代码
不然可以用这个比较通用的:- @echo off
- set "str=abc def,hjg,rtd,c,p,QQ"
- setlocal enabledelayedexpansion
- set str=!str:,=^
-
- !
- ::把 , 替换为 换行符,然后用 for /f 作为多行文本读取
- echo;!str!
- ::for /f 就不举例了
- pause
复制代码
作者: CrLf 时间: 2013-5-15 01:22
再不行可以用别的办法:- @set @t=0;WScript.Echo(WScript.Arguments(0).replace(/,/g,"\r\n"));/*
- @echo off
- for /f %%a in ('cscript /nologo /e:jscript "%~0" a,b,c') do echo %%a
- pause
复制代码
改成 stdin 的也同理。
作者: CrLf 时间: 2013-5-15 01:22
或者 sed:- @echo off
- echo a,b,c|sed "s/,/\n/g"
- pause
复制代码
作者: CrLf 时间: 2013-5-15 01:26
再或者 awk...- @echo off
- echo a,b,c|gawk -F, "{for(i=1;i<=NF;i++){print $(i)}}"
- pause
复制代码
办法有这么多(还要的话还有...),怎么用就看你心情~
作者: BAT-VBS 时间: 2013-5-15 09:44
回复 5# CrLf - echo abc def,hjg,rtd,c,p,QQ | gawk "gsub(/,/,\"\t\")"
复制代码
作者: CrLf 时间: 2013-5-15 19:00
回复 6# BAT-VBS
内部函数真邪恶,谢谢指点,学习了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |