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

[文本处理] 批处理如何切割字符串?

有一个字符串  我把他们用,连接后  怎么让他们重新拆分  如题
字符串:abc def         hjg        rtd   c      p   QQ
然后我把上面六个连接一起 变成新的字符串 abc def,hjg,rtd,c,p,QQ
我现在需要解决的是  如何重新分开!  注abc def是一个字符串

回复 6# BAT-VBS


    内部函数真邪恶,谢谢指点,学习了

TOP

回复 5# CrLf
  1. echo abc def,hjg,rtd,c,p,QQ | gawk "gsub(/,/,\"\t\")"
复制代码
1

评分人数

    • CrLf: 学习了技术 + 1

TOP

再或者 awk...
  1. @echo off
  2. echo a,b,c|gawk -F, "{for(i=1;i<=NF;i++){print $(i)}}"
  3. pause
复制代码
办法有这么多(还要的话还有...),怎么用就看你心情~

TOP

或者 sed:
  1. @echo off
  2. echo a,b,c|sed "s/,/\n/g"
  3. pause
复制代码

TOP

再不行可以用别的办法:
  1. @set @t=0;WScript.Echo(WScript.Arguments(0).replace(/,/g,"\r\n"));/*
  2. @echo off
  3. for /f %%a in ('cscript /nologo /e:jscript "%~0" a,b,c') do echo %%a
  4. pause
复制代码
改成 stdin 的也同理。

TOP

如果不含特殊字符可以用这个简单的:
  1. @echo off
  2. set "str=abc def,hjg,rtd,c,p,QQ"
  3. setlocal enabledelayedexpansion
  4. set str=!str:,=" "!
  5. ::把 , 替换为分隔符,再用 for 读取
  6. for %%a in ("!str!") do echo;%%~a
  7. pause
复制代码
不然可以用这个比较通用的:
  1. @echo off
  2. set "str=abc def,hjg,rtd,c,p,QQ"
  3. setlocal enabledelayedexpansion
  4. set str=!str:,=^
  5. !
  6. ::把 , 替换为 换行符,然后用 for /f 作为多行文本读取
  7. echo;!str!
  8. ::for /f 就不举例了
  9. pause
复制代码

TOP

返回列表