[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

将字符串中的字母大写换成小写,小写换成大写。
如:
  1. set var=abHJ      dfsKHK    aB
复制代码
  1. 要求显示
  2. 转换前:abHJ      dfsKHK    aB
  3. 转换后:ABhj      DFSkhk   Ab
复制代码
技术问题请到论坛发帖求助!

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

TOP

回复 53# CrLf


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

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 字符串大小写互换
  4. 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
  5. set SmallLetter=abcdefghijklmnopqrstuvwxyz
  6. set startIndex=0
  7. for %%i in (%BigLetter%) do (
  8. call set BigIndex=%%SmallLetter:~!startIndex!,1%%
  9. set arrayBig[!BigIndex!]=%%i
  10. set arraySmall[%%i]=!BigIndex!
  11. set /a startIndex+=1
  12. )
  13. set /p str=请输入要转换的字符串:
  14. echo %str%>str.txt
  15. echo .>>str.txt
  16. REM 获取输入字符串的长度
  17. for /f "tokens=1 delims=:" %%a in ('findstr /o .* str.txt') do (
  18. set  /a strlen=%%a-2
  19. )
  20. echo string len=!strlen!
  21. set /a loopindex=!strlen!-1
  22. for /l %%i in (0, 1, !loopindex!) do (
  23. set letter=!str:~%%i, 1!
  24. call set smallchar=%%arraySmall[!letter!]%%
  25. call set bigchar=%%arrayBig[!letter!]%%
  26. if "!letter!" EQU "!smallchar!" (
  27. set retstr=!retstr!!bigchar!
  28. ) else if "!letter!" EQU "!bigchar!" (
  29. set retstr=!retstr!!smallchar!
  30. ) else (
  31. set retstr=!retstr!!letter!
  32. )
  33. )
  34. echo retstr=!retstr!
复制代码

TOP

回复 66# niudd


    你这样水真的好?
附一个:
  1. ' 2>NUL&@(CLS&Set /p STR=键入:&CALL CSCRIPT -e:VBSCRIPT "%~0" "%%STR%%"&PAUSE&EXIT)
  2. Option Explicit
  3. Dim New_,i
  4. For i = 1 To Len(Wscript.Arguments(0))
  5. If UCase(Mid(Wscript.Arguments(0),i,1))=Mid(Wscript.Arguments(0),i,1) Then
  6. New_=New_&LCase(Mid(Wscript.Arguments(0),i,1))
  7. ElseIf LCase(Mid(Wscript.Arguments(0),i,1))=Mid(Wscript.Arguments(0),i,1) Then
  8. New_=New_&UCase(Mid(Wscript.Arguments(0),i,1))
  9. Else
  10. New_=New_&Mid(Wscript.Arguments(0),i,1)
  11. End If
  12. Next
  13. Wscript.echo New_
复制代码
1

评分人数

TOP

要点积分看文章。

TOP

要点积分看文章。

TOP

要点积分看文章。

TOP

本帖最后由 taofan712 于 2017-2-28 13:06 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. (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
  3. :loop
  4. cls&echo;输入混杂大小写的字母串(不超过15位)&set /p var=
  5. for /l %%b in (0,1,15) do (
  6. set "zifu=!var:~%%b,1!"
  7. if "!zifu!"=="" pause>nul&goto loop
  8. for /f "tokens=2 delims=_" %%c in ('findstr /b "!zifu!" temp.txt') do set /p=%%c<nul
  9. )
  10. pause&goto loop
复制代码
有趣哈,想了好一会儿才搞出个答案。
1

评分人数

TOP

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

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('type 示例文件.txt') do (
  4.    set "str=%%i"
  5.    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!"
  6.    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!"
  7.    echo.!str!
  8. ))>示例文件_new.txt
复制代码

TOP

本代码处理的字符串不得有空格和特殊符号,也就是只能是大小写字母。
  1. @echo off&setlocal enabledelayedexpansion
  2. set str=qdjSSM
  3. for /l %%i in (0 1 100) do (
  4.    if "!str:~%%i,1!" neq "" (
  5.       set "s=!s!!str:~%%i,1!  "
  6.    )
  7. )
  8. 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"
  9. 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"
  10. for %%a in (%s%) do (
  11.    for %%b in (%ll%) do (
  12.       if /i %%a equ %%b (
  13.         if %%a neq %%b (
  14.            set res=!res!%%b
  15.         )
  16.       )
  17.    )
  18.    for %%b in (%ss%) do (
  19.       if /i %%a equ %%b (
  20.         if %%a neq %%b (
  21.            set res=!res!%%b
  22.         )
  23.       )
  24.    )
  25. )
  26. echo %res%
  27. pause
复制代码
1

评分人数

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

TOP

一翻旧帖才发现自己以前已经发过了奇葩代码,那就贴两个常规思路的吧,估计会撞车:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=TestABC"
  3. set "str2=!str:~1!"
  4. set "大写=!str!"&set "小写=!str!"
  5. 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!"
  6. 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!"
  7. for /l %%a in (0 1 100) do (
  8. if "!str:~%%a,1!"=="!小写:~%%a,1!" (
  9. set "str=!str:~,%%a!!大写:~%%a,1!!str2:~%%a!"
  10. ) else (
  11. if "!str:~%%a,1!"=="!大写:~%%a,1!" set "str=!str:~,%%a!!小写:~%%a,1!!str2:~%%a!"
  12. )
  13. )
  14. echo !str!
  15. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=TestABC"
  3. set "str=@!str!"
  4. 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
  5. for /l %%a in (1 1 8189)do (
  6. if "!str:~%%a,1!"=="" (
  7. for /f "delims=" %%b in (^""!结果!"^")do echo %%~b&pause
  8. )
  9. set 结果=!结果!!str:~%%a,1!
  10. if !str:~%%a^,1! leq Z if !str:~%%a^,1! geq a (
  11. for /f %%b in ("!str:~%%a,1!:") do (
  12. if %%b neq %%~db (set chr=%%~db)else set chr=!%%b~0!
  13. )
  14. set 结果=!结果:~,-1!!chr:~,1!
  15. )
  16. )
复制代码

TOP

  1. @echo off& setlocal enabledelayedexpansion
  2. 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
  3. 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
  4. set /p var=input strings:
  5. call :setvar __var1
  6. call :setvar __var2
  7. set n=0
  8. :chg
  9. if not "!var:~%n%,1!" equ "" (
  10. if "!var:~%n%,1!" equ " " (set _vartmp=!_vartmp! ) else (
  11. set #tmp=!var:~%n%,1!
  12. for /f "tokens=2 delims==" %%i in ('set _!#tmp!') do (
  13. if not "!var:~%n%,1!" equ "%%i" set __vartmp=!__vartmp!%%i
  14. )
  15. )
  16. set /a n+=1
  17. goto chg
  18. )
  19. echo !__vartmp!
  20. pause
  21. goto :eof
  22. :setvar
  23. for %%i in (!%1!) do set _%%i%1=%%i
  24. goto :eof
复制代码

TOP

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

不通用的
  1. @echo off
  2. set var=abHJ      dfsKHK  aB
  3. echo 替换前 %var%
  4. set a=%var:abHJ      dfsKHK  aB=AVhj      DFSkhk  Ab%
  5. echo 替换后 %a%
  6. pause>nul
复制代码

TOP

返回列表