在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在批处理中进行 ASCII 字符串大小比较, 本来想当然的以为其大小依据是 ASCII 字符码值, 可事实并非如此. 以下是一个 ASCII 可见字符(码值从 32 到 126) 共 95 个字符 在批处理字符串比较中的实际次序表, 编号从 00 到 94, 编号越小, 字符也越小. 观察此表, 总体次序 部分性地和 ASCII 次序相符. 有以下的几个特点:
ASCII 可见字符(码值从 32 到 126)批处理比较实际次序表
以下是生成此表的代码, 首先生成不包含 半角感叹号 ! 的 94 个字符的次序表, 然后根据几个简单比较得出 半角感叹号 在表中的位置. 生成除 半角感叹号 ! 外 94 个字符次序表的代码(代码中开启了 延迟的环境变量扩展, 简化代码起见, 故将 ! 单独处理) @echo off & setlocal enabledelayedexpansion & cls (set chrs=^"#$%%^&'^(^)*+,-./01234 56789:;^<=^>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{^|}~) echo 这是一个由 ASCII 码值 32--126 ^(除了半角感叹号外^) 共 94 个字符组成的字符串: echo %chrs% set /p=按任意键查看对这 94 个字符进行初始编号...<nul&pause>nul&echo. for /l %%i in (0,1,93) do ( (set cc%%i=!chrs:~%%i,1!) set /a "ii=100+%%i" echo !ii:~1!:{!cc%%i!} ) set /p=按任意键查看对这 94 个字符进行排序后的次序表...<nul&pause>nul&echo. for /l %%i in (0,1,92) do ( set /a "min=%%i, n=%%i+1" (set minChr=!cc%%i!) for /l %%j in (!n!,1,93) do ( if "!cc%%j!" lss "!minChr!" ( (set min=%%j) (set minChr=!cc%%j!) ) ) for /f "tokens=1" %%m in ("!min!") do ( (set tt=!cc%%i!) (set cc%%i=!cc%%m!) (set cc%%m=!tt!) ) ) for /l %%i in (0,1,93) do ( set /a "ii=100+%%i" echo !ii:~1!:{!cc%%i!} ) set /p=按任意键查看插入半角感叹号后, 95 个字符的全次序表...<nul&pause>nul&echo. for /l %%i in (93,-1,3) do ( set /a "jj=%%i+1" for /f "tokens=1" %%j in ("!jj!") do (set cc%%j=!cc%%i!) ) setlocal disabledelayedexpansion (set cc3=!) setlocal enabledelayedexpansion for /l %%i in (0,1,94) do ( set /a "ii=100+%%i" echo !ii:~1!:{!cc%%i!} ) pause exit /b 关闭延迟的环境变量扩展条件下 确定 半角感叹号 ! 在表中的位置的代码
输出 lll 表明 ! 小于 #
输出 ggg 表明 ! 大于 -
输出 lll
输出 lll
输出 ≠ 以上表明 感叹号 ! 是小于双引号 " 的, 所以感叹号在表中的编号应是 03, 而双引号及后面的所有字符编号全部加1. 到此这篇关于批处理ASCII字符比较大小实际次序表的文章就介绍到这了,更多相关ASCII字符比较大小内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论