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

[文本处理] [分享]批处理把字符串两两交换位置

【问题描述】
字符串abcdef如何变成badcfe,就是一二项交换位置,三四项交换位置?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【解决方案】
  1. @echo off
  2. set OldStr=abcdef
  3. set SuffixStr=%OldStr%
  4. set NewStr=
  5. :Loop
  6. if "%SuffixStr%" equ "" (
  7.     echo,%NewStr%
  8.     pause
  9.     goto :eof
  10. ) else (
  11.     set NewStr=%NewStr%%SuffixStr:~1,1%%SuffixStr:~0,1%
  12.     set SuffixStr=%SuffixStr:~2%
  13.     goto :Loop
  14. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

跟帖一个
  1. @echo off
  2. set "oldstr=abcdefghijklmn"
  3. :loop
  4. call set tmp=%%oldstr:~%n%,2%%
  5. if "%tmp%"=="" goto quit
  6. set /p new=%tmp:~-1%%tmp:~,1%<nul
  7. set /a n+=2
  8. if not "%tmp%"=="" goto loop
  9. :quit
  10. echo;&pause
复制代码

TOP

  1. "abcdefghijklmn" -split '(\w\w)'|%{
  2.   $a=$_.tochararray()    #l两两切割转数组
  3.   [array]::reverse($a)    #颠倒数组顺序
  4.   $new+=$a
  5. }
  6. $new -join ""
复制代码

TOP

贴个递归版本,原理都类似
  1. function fn($str){
  2.     if($str.Length -lt 2){ return $str }
  3.     return $str.SubString(1,1) + $str.SubString(0,1) + (fn -str ($str.SubString(2)))
  4. }
  5. fn -str 'abcdefghijklmn'
复制代码

TOP

返回列表