本帖最后由 悬崖之树 于 2013-2-8 18:46 编辑
里面的变量:
str 待处理字符串
m 英文小写字符表
n 英文大写字符表
a 用来按顺序取得str里的每一个字符
c 保存由a指定的字符
b 在for循环中的计数器,用来存取待处理字符在字符表里的序号
d 用不同的值表示待转换字符是在m还是n中找到的,如果d等于3的话,就说明不是英文字符,直接输出。
out 接收每个转换好的字符- @echo off&setlocal enabledelayedexpansion
- set str=asDFGhjklQ
- set m=abcdefghijklmnopqrstuvwxyz
- set n=ABCDEFGHIJKLMNOPQRSTUVWXYZ
- set a=-1
-
- :loop
- set /a a+=1
- set c=!str:~%a%,1!
- if "%c%" equ "" goto end
- for %%i 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 b+=1
- if "!c!" == "%%i" set d=1&goto out
- )&set b=-1
- for %%i 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 b+=1
- if "!c!" == "%%i" set d=2&goto out
- )&set b=-1
- set d=3
- :out
- if %d%==1 set out=%out%!m:~%b%,1!
- if %d%==2 set out=%out%!n:~%b%,1!
- if %d%==3 set out=%out%%c%
- goto loop
- )
- :end
- echo %out%
- pause
复制代码 我的想法是通过for循环找到字符串里每个字符在字符串%m%或%n%里的序号,如果该字符时在%m%里找到的,那么只要输出%n%里相同序号的字符就可以了。 |