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

批处理对换大小写字母Aa

响应版主的号召来一题:
已知字符串 str=my nAme is new batcher
要求结果显示:my name is new bAtcher

即要对换a与A,把大A换成小a,小a换大A。
要求:1--简单说明你的编程思路。
           2--编写的程序最好是可以对任意输入的字符串有效
本论坛很有特色,特别是新手练功区,特棒。
参考答案:
  1. @echo off
  2. set /p str=please input---
  3. set str=%str: =%+
  4. echo -you input char---%str%
  5. :one  这里截取str左面第一个字符,把它放到str的右面,进行循环移动,以+号,标示结束
  6. set str1=%str:~,1%
  7. set str2=%str:~1%
  8. if %str1%==a (set str1=A ) else (
  9. if %str1%==A (set str1=a)
  10. )
  11. set str=%str2%%str1%
  12. if %str1% neq + goto one
  13. :end  
  14. set str=%str:+= %
  15. echo --result----%str%
复制代码


[ 本帖最后由 wxcute 于 2009-5-12 11:47 编辑 ]
1

评分人数

    • wxcute: 楼主积极性很高。不过有点岐意,是交换位置 ...PB + 5

题目还是有难度的,不能直接用set中的替换,因为set不区分大小写。。。

TOP

我想起了sed...
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

对换?这个字符串中只有两个a吗,且一个大写,一个小写?~
心绪平和,眼藏静谧。

TOP

将字符串中的字母大小写互换
http://www.bathome.net/thread-2740-1-1.html
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

先来个逐字符的(效率不高):
  1. @echo off
  2. set /p str=请输入任意字符串(请不要输入特殊字符):
  3. set /p=字符串的大小a互换后为:<nul
  4. :lp
  5. if "%str:~,1%" equ "a" (
  6.     set /p=A<nul
  7.     ) else (
  8.     if "%str:~,1%" equ "A" (
  9.         set /p=a<nul
  10.         ) else (
  11.         set /p=%str:~,1%<nul
  12.    )
  13. )
  14. set "str=%str:~1%"
  15. if defined str goto lp
  16. pause>nul
复制代码
***共同提高***

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p str=请输入含有a和A的字符串:
  4. echo.
  5. echo 你输入的字符串是:%str%
  6. echo.
  7. echo 经过大小写A的转换后的字符串是:
  8. set num=0
  9. :start
  10. set a=!str:~%num%,1!
  11. if "%a%"=="" goto end
  12. set /a num+=1
  13. if "%a%"=="A" goto 1
  14. if "%a%"=="a" goto 2
  15. goto xianshi
  16. :1
  17. set A=a
  18. goto xianshi
  19. :2
  20. set a=A
  21. :xianshi
  22. set /p=%a%<nul
  23. goto start
  24. :end
  25. echo.
  26. pause
复制代码

[ 本帖最后由 keen 于 2009-3-16 17:14 编辑 ]
1

评分人数

    • wxcute: 很棒,加分鼓励。PB + 5
(*^_^*)

TOP

  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set /p n=请输入不多于20个的字母:
  4. for /l %%b in (0 1 20) do (
  5. set k=
  6. for %%a in (aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU
  7. vV wW xX yY zZ) do (
  8. set b=%%a
  9. set ba=!b:~0,1!
  10. set bb=!b:~1,1!
  11. set c=!n:~%%b,1!
  12. if "!c!"=="" goto end
  13. if !c!==!ba! set k=!bb!
  14. if !c!==!bb! set k=!ba!
  15. )
  16. if "!k!"="" set k=!c!
  17. set /p=!k!<nul
  18. )
  19. :end
  20. pause>nul
复制代码
错在哪里了啊,去掉最后一个if就行了可是那样对于非字母就~~~

TOP

  1. @echo off
  2. :1
  3. set/p p=
  4. echo %p%|findstr "--a--">nul&&echo 大哥没事写什么减号嘛!重写! && ghoto :1
  5. set "p=%p:A=--A--%"
  6. set "p=%p:a=A%"
  7. set "p=%p:--A--=a%"
  8. echo %p%
  9. pause
复制代码
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

返回列表