Board logo

标题: 批处理对换大小写字母Aa [打印本页]

作者: myzwd    时间: 2009-2-28 19:57     标题: 批处理对换大小写字母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 编辑 ]
作者: defanive    时间: 2009-2-28 22:20

题目还是有难度的,不能直接用set中的替换,因为set不区分大小写。。。
作者: BBCC    时间: 2009-2-28 22:30

我想起了sed...
作者: pusofalse    时间: 2009-2-28 23:17

对换?这个字符串中只有两个a吗,且一个大写,一个小写?~
作者: zqz0012005    时间: 2009-2-28 23:22

将字符串中的字母大小写互换
http://www.bathome.net/thread-2740-1-1.html
作者: batman    时间: 2009-3-1 00:08

先来个逐字符的(效率不高):
  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
复制代码

作者: keen    时间: 2009-3-16 16:14

  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 编辑 ]
作者: BS0小陈    时间: 2011-7-15 09:00

  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就行了可是那样对于非字母就~~~
作者: mxxcgzxxx    时间: 2011-7-15 15:52

  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
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2