找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21349|回复: 8

批处理对换大小写字母Aa

[复制链接]
发表于 2009-2-28 19:57:19 | 显示全部楼层 |阅读模式
响应版主的号召来一题:
已知字符串 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 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 楼主积极性很高。不过有点岐意,是交换位置 ...

查看全部评分

发表于 2009-2-28 22:20:02 | 显示全部楼层
题目还是有难度的,不能直接用set中的替换,因为set不区分大小写。。。
发表于 2009-2-28 22:30:34 | 显示全部楼层
我想起了sed...
发表于 2009-2-28 23:17:57 | 显示全部楼层
对换?这个字符串中只有两个a吗,且一个大写,一个小写?~
发表于 2009-2-28 23:22:12 | 显示全部楼层
将字符串中的字母大小写互换
http://www.bathome.net/thread-2740-1-1.html
发表于 2009-3-1 00:08:34 | 显示全部楼层
先来个逐字符的(效率不高):
  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
复制代码
发表于 2009-3-16 16:14:47 | 显示全部楼层

  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 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 很棒,加分鼓励。

查看全部评分

发表于 2011-7-15 09:00:34 | 显示全部楼层

  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就行了可是那样对于非字母就~~~
发表于 2011-7-15 15:52:32 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:25 , Processed in 0.012106 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表