标题: 批处理对换大小写字母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--编写的程序最好是可以对任意输入的字符串有效
本论坛很有特色,特别是新手练功区,特棒。
参考答案:- @echo off
- set /p str=please input---
- set str=%str: =%+
-
- echo -you input char---%str%
- :one 这里截取str左面第一个字符,把它放到str的右面,进行循环移动,以+号,标示结束
- set str1=%str:~,1%
- set str2=%str:~1%
- if %str1%==a (set str1=A ) else (
- if %str1%==A (set str1=a)
- )
- set str=%str2%%str1%
- if %str1% neq + goto one
-
- :end
- set str=%str:+= %
- 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
先来个逐字符的(效率不高):- @echo off
- set /p str=请输入任意字符串(请不要输入特殊字符):
- set /p=字符串的大小a互换后为:<nul
- :lp
- if "%str:~,1%" equ "a" (
- set /p=A<nul
- ) else (
- if "%str:~,1%" equ "A" (
- set /p=a<nul
- ) else (
- set /p=%str:~,1%<nul
- )
- )
- set "str=%str:~1%"
- if defined str goto lp
- pause>nul
复制代码
作者: keen 时间: 2009-3-16 16:14
- @echo off
- setlocal enabledelayedexpansion
- set /p str=请输入含有a和A的字符串:
- echo.
- echo 你输入的字符串是:%str%
- echo.
- echo 经过大小写A的转换后的字符串是:
- set num=0
- :start
- set a=!str:~%num%,1!
- if "%a%"=="" goto end
- set /a num+=1
- if "%a%"=="A" goto 1
- if "%a%"=="a" goto 2
- goto xianshi
- :1
- set A=a
- goto xianshi
- :2
- set a=A
- :xianshi
- set /p=%a%<nul
- goto start
- :end
- echo.
- pause
复制代码
[ 本帖最后由 keen 于 2009-3-16 17:14 编辑 ]
作者: BS0小陈 时间: 2011-7-15 09:00
- @echo off
- SETLOCAL ENABLEDELAYEDEXPANSION
- set /p n=请输入不多于20个的字母:
- for /l %%b in (0 1 20) do (
- set k=
- for %%a in (aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU
-
- vV wW xX yY zZ) do (
- set b=%%a
- set ba=!b:~0,1!
- set bb=!b:~1,1!
- set c=!n:~%%b,1!
- if "!c!"=="" goto end
- if !c!==!ba! set k=!bb!
- if !c!==!bb! set k=!ba!
- )
- if "!k!"="" set k=!c!
- set /p=!k!<nul
- )
- :end
- pause>nul
复制代码
错在哪里了啊,去掉最后一个if就行了可是那样对于非字母就~~~
作者: mxxcgzxxx 时间: 2011-7-15 15:52
- @echo off
- :1
- set/p p=
- echo %p%|findstr "--a--">nul&&echo 大哥没事写什么减号嘛!重写! && ghoto :1
- set "p=%p:A=--A--%"
- set "p=%p:a=A%"
- set "p=%p:--A--=a%"
- echo %p%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |