返回列表 发帖

批处理对换大小写字母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%COPY


[ 本帖最后由 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

先来个逐字符的(效率不高):
@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>nulCOPY
***共同提高***

TOP

@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.
pauseCOPY

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

评分人数

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

TOP

@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>nulCOPY
错在哪里了啊,去掉最后一个if就行了可是那样对于非字母就~~~

TOP

@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%
pauseCOPY
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

返回列表