标题: [文本处理] [分享]批处理把字符串两两交换位置 [打印本页]
作者: Batcher 时间: 2022-3-22 22:43 标题: [分享]批处理把字符串两两交换位置
【问题描述】
字符串abcdef如何变成badcfe,就是一二项交换位置,三四项交换位置?
作者: Batcher 时间: 2022-3-22 22:45
【解决方案】- @echo off
- set OldStr=abcdef
- set SuffixStr=%OldStr%
- set NewStr=
-
- :Loop
- if "%SuffixStr%" equ "" (
- echo,%NewStr%
- pause
- goto :eof
- ) else (
- set NewStr=%NewStr%%SuffixStr:~1,1%%SuffixStr:~0,1%
- set SuffixStr=%SuffixStr:~2%
- goto :Loop
- )
复制代码
作者: for_flr 时间: 2022-3-23 09:31
跟帖一个- @echo off
- set "oldstr=abcdefghijklmn"
- :loop
- call set tmp=%%oldstr:~%n%,2%%
- if "%tmp%"=="" goto quit
- set /p new=%tmp:~-1%%tmp:~,1%<nul
- set /a n+=2
- if not "%tmp%"=="" goto loop
- :quit
- echo;&pause
复制代码
作者: for_flr 时间: 2022-3-23 09:37
- "abcdefghijklmn" -split '(\w\w)'|%{
- $a=$_.tochararray() #l两两切割转数组
- [array]::reverse($a) #颠倒数组顺序
- $new+=$a
- }
- $new -join ""
复制代码
作者: went 时间: 2022-3-23 12:20
贴个递归版本,原理都类似- function fn($str){
- if($str.Length -lt 2){ return $str }
- return $str.SubString(1,1) + $str.SubString(0,1) + (fn -str ($str.SubString(2)))
- }
-
- fn -str 'abcdefghijklmn'
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |