返回列表 发帖

批处理将字符串中的字母大小写互换

将字符串中的字母大写换成小写,小写换成大写。
如:
set var=abHJ      dfsKHK    aBCOPY
要求显示
转换前:abHJ      dfsKHK    aB
转换后:ABhj      DFSkhk   AbCOPY
技术问题请到论坛发帖求助!

试了一下tr a-zA-Z A-Za-z似乎可以

TOP

回复 53# CrLf


    没看出哪哪里用了 ascmap ,结果是:
字符串=WwW.baThOME.net
结 果 =RRh}|OJH`h

TOP

@echo off
setlocal enabledelayedexpansion
REM 字符串大小写互换
set BigLetter=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
set SmallLetter=abcdefghijklmnopqrstuvwxyz
set startIndex=0
for %%i in (%BigLetter%) do (
call set BigIndex=%%SmallLetter:~!startIndex!,1%%
set arrayBig[!BigIndex!]=%%i
set arraySmall[%%i]=!BigIndex!
set /a startIndex+=1
)
set /p str=请输入要转换的字符串:
echo %str%>str.txt
echo .>>str.txt
REM 获取输入字符串的长度
for /f "tokens=1 delims=:" %%a in ('findstr /o .* str.txt') do (
set  /a strlen=%%a-2
)
echo string len=!strlen!
set /a loopindex=!strlen!-1
for /l %%i in (0, 1, !loopindex!) do (
set letter=!str:~%%i, 1!
call set smallchar=%%arraySmall[!letter!]%%
call set bigchar=%%arrayBig[!letter!]%%
if "!letter!" EQU "!smallchar!" (
set retstr=!retstr!!bigchar!
) else if "!letter!" EQU "!bigchar!" (
set retstr=!retstr!!smallchar!
) else (
set retstr=!retstr!!letter!
)
)
echo retstr=!retstr!COPY

TOP

回复 66# niudd


    你这样水真的好?
附一个:
' 2>NUL&@(CLS&Set /p STR=键入:&CALL CSCRIPT -e:VBSCRIPT "%~0" "%%STR%%"&PAUSE&EXIT)
Option Explicit
Dim New_,i
For i = 1 To Len(Wscript.Arguments(0))
If UCase(Mid(Wscript.Arguments(0),i,1))=Mid(Wscript.Arguments(0),i,1) Then
New_=New_&LCase(Mid(Wscript.Arguments(0),i,1))
ElseIf LCase(Mid(Wscript.Arguments(0),i,1))=Mid(Wscript.Arguments(0),i,1) Then
New_=New_&UCase(Mid(Wscript.Arguments(0),i,1))
Else
New_=New_&Mid(Wscript.Arguments(0),i,1)
End If
Next
Wscript.echo New_COPY
1

评分人数

TOP

要点积分看文章。

TOP

要点积分看文章。

TOP

要点积分看文章。

TOP

本帖最后由 taofan712 于 2017-2-28 13:06 编辑
@echo off & setlocal enabledelayedexpansion
(for %%a in (a_A b_B c_C d_D e_E f_F g_G h_H i_I j_J k_K l_L m_M n_N o_O p_P q_Q r_R s_S t_T u_U v_V w_W x_X y_Y z_Z A_a B_b C_c D_d E_e F_f G_g H_h I_i J_j K_k L_l M_m N_n O_o P_p Q_q R_r S_s T_t U_u V_v W_w X_x Y_y Z_z) do echo;%%a)>temp.txt
:loop
cls&echo;输入混杂大小写的字母串(不超过15位)&set /p var=
for /l %%b in (0,1,15) do (
set "zifu=!var:~%%b,1!"
if "!zifu!"=="" pause>nul&goto loop
for /f "tokens=2 delims=_" %%c in ('findstr /b "!zifu!" temp.txt') do set /p=%%c<nul
)
pause&goto loopCOPY
有趣哈,想了好一会儿才搞出个答案。
1

评分人数

TOP

"""
python大小写字符互换.py
http://www.bathome.net/thread-2740-1-1.html
依山居 4:47 2015/12/15
"""
s="sD8F8S88f899f9DiIujUUuj JhHUuH hH$%"
def fn(x):
    if x.islower():
        return x.upper()
    elif x.isupper():
        return x.lower()
    else:
        return x
result=''.join([fn(r) for r in list(s)])
print(result)
"""
输出:
Sd8f8s88F899F9dIiUJuuUJ jHhuUh Hh$%
"""COPY
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

@echo off
setlocal enabledelayedexpansion
(for /f "delims=" %%i in ('type 示例文件.txt') do (
   set "str=%%i"
   for %%s in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set "str=!str:%%s=%%s!"
   REM for %%s in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set "str=!str:%%s=%%s!"
   echo.!str!
))>示例文件_new.txtCOPY

TOP

本代码处理的字符串不得有空格和特殊符号,也就是只能是大小写字母。
@echo off&setlocal enabledelayedexpansion
set str=qdjSSM
for /l %%i in (0 1 100) do (
   if "!str:~%%i,1!" neq "" (
      set "s=!s!!str:~%%i,1!  "
   )
)
set "ll=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
set "ss=a b c d e f g h i j k l m n o p q r s t u v w x y z"
for %%a in (%s%) do (
   for %%b in (%ll%) do (
      if /i %%a equ %%b (
        if %%a neq %%b (
           set res=!res!%%b
        )
      )
   )
   for %%b in (%ss%) do (
      if /i %%a equ %%b (
        if %%a neq %%b (
           set res=!res!%%b
        )
      )
   )
)
echo %res%
pauseCOPY
1

评分人数

    • CrLf: 开始学了,必须鼓励鼓励~技术 + 1
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

一翻旧帖才发现自己以前已经发过了奇葩代码,那就贴两个常规思路的吧,估计会撞车:
@echo off&setlocal enabledelayedexpansion
set "str=TestABC"
set "str2=!str:~1!"
set "大写=!str!"&set "小写=!str!"
for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set "大写=!大写:%%a=%%a!"
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set "小写=!小写:%%a=%%a!"
for /l %%a in (0 1 100) do (
if "!str:~%%a,1!"=="!小写:~%%a,1!" (
set "str=!str:~,%%a!!大写:~%%a,1!!str2:~%%a!"
) else (
if "!str:~%%a,1!"=="!大写:~%%a,1!" set "str=!str:~,%%a!!小写:~%%a,1!!str2:~%%a!"
)
)
echo !str!
pauseCOPY
@echo off&setlocal enabledelayedexpansion
set "str=TestABC"
set "str=@!str!"
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z)do set %%a=%%a
for /l %%a in (1 1 8189)do (
if "!str:~%%a,1!"=="" (
for /f "delims=" %%b in (^""!结果!"^")do echo %%~b&pause
)
set 结果=!结果!!str:~%%a,1!
if !str:~%%a^,1! leq Z if !str:~%%a^,1! geq a (
for /f %%b in ("!str:~%%a,1!:") do (
if %%b neq %%~db (set chr=%%~db)else set chr=!%%b~0!
)
set 结果=!结果:~,-1!!chr:~,1!
)
)COPY

TOP

@echo off& setlocal enabledelayedexpansion
set __var1=a b c d e f g h i j k l m n o p q r s t u v w x y z
set __var2=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
set /p var=input strings:
call :setvar __var1
call :setvar __var2
set n=0
:chg
if not "!var:~%n%,1!" equ "" (
if "!var:~%n%,1!" equ " " (set _vartmp=!_vartmp! ) else (
set #tmp=!var:~%n%,1!
for /f "tokens=2 delims==" %%i in ('set _!#tmp!') do (
if not "!var:~%n%,1!" equ "%%i" set __vartmp=!__vartmp!%%i
)
)
set /a n+=1
goto chg
)
echo !__vartmp!
pause
goto :eof
:setvar
for %%i in (!%1!) do set _%%i%1=%%i
goto :eofCOPY

TOP

本帖最后由 lpy19870706 于 2011-11-27 22:53 编辑

不通用的
@echo off
set var=abHJ      dfsKHK  aB
echo 替换前 %var%
set a=%var:abHJ      dfsKHK  aB=AVhj      DFSkhk  Ab%
echo 替换后 %a%
pause>nulCOPY

TOP

返回列表