欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

批處理ASCII字符比較大小實際次序表

 更新時間:2021年09月16日 10:34:34   作者:neorobin  
在批處理中進行 ASCII 字符串大小比較, 本來想當(dāng)然的以為其大小依據(jù)是 ASCII 字符碼值, 可事實并非如此,下面就為大家分享一下

在批處理中進行 ASCII 字符串大小比較, 本來想當(dāng)然的以為其大小依據(jù)是 ASCII 字符碼值, 可事實并非如此.

以下是一個 ASCII 可見字符(碼值從 32 到 126) 共 95 個字符 在批處理字符串比較中的實際次序表, 編號從 00 到 94, 編號越小, 字符也越小.

觀察此表, 總體次序 部分性地和 ASCII 次序相符. 有以下的幾個特點:

① 所有的 標點符號 在 數(shù)字字符 的前面; 所有的 數(shù)字字符 在 字母的前面;
② 數(shù)字字符中, 按對應(yīng)數(shù)字值大小排序;
③ 字母中, 不同的字母比較, 不論其大小寫, 而只以在字母表中的次序排大小;
④ 同一個字母, 小寫的小于大寫的.
⑤ 成對的 標點符號, 左邊的在前, 右邊的在后. 即: (小于), [小于], {小于}, <小于>

ASCII 可見字符(碼值從 32 到 126)批處理比較實際次序表

00:{ }
01:{'}
02:{-}
03:{!}
04:{"}
05:{#}
06:{$}
07:{%}
08:{&}
09:{(}
10:{)}
11:{*}
12:{,}
13:{.}
14:{/}
15:{:}
16:{;}
17:{?}
18:{@}
19:{[}
20:{\}
21:{]}
22:{^}
23:{_}
24:{`}
25:{{}
26:{|}
27:{}}
28:{~}
29:{+}
30:{<}
31:{=}
32:{>}
33:{0}
34:{1}
35:{2}
36:{3}
37:{4}
38:{5}
39:{6}
40:{7}
41:{8}
42:{9}
43:{a}
44:{A}
45:
46:{B}
47:{c}
48:{C}
49:vvxyksv9kd
50:{D}
51:{e}
52:{E}
53:{f}
54:{F}
55:{g}
56:{G}
57:{h}
58:{H}
59:{i}
60:{I}
61:{j}
62:{J}
63:{k}
64:{K}
65:{l}
66:{L}
67:{m}
68:{M}
69:{n}
70:{N}
71:{o}
72:{O}
73:{p}
74:{P}
75:{q}
76:{Q}
77:{r}
78:{R}
79:{s}
80:{S}
81:{t}
82:{T}
83:{u}
84:{U}
85:{v}
86:{V}
87:{w}
88:{W}
89:{x}
90:{X}
91:{y}
92:{Y}
93:{z}
94:{Z}

以下是生成此表的代碼, 首先生成不包含 半角感嘆號 ! 的 94 個字符的次序表, 然后根據(jù)幾個簡單比較得出 半角感嘆號 在表中的位置.
表生成代碼中, 字符排序采用選擇排序法. 字符串初始化中, 對特殊字符進行了轉(zhuǎn)義:
用前導(dǎo)上角號 ^ 轉(zhuǎn)義的有 8 個特殊字符: "&()<>^|
另外 百分號 % 用自身雙寫進行轉(zhuǎn)義.

生成除 半角感嘆號 ! 外 94 個字符次序表的代碼(代碼中開啟了 延遲的環(huán)境變量擴展, 簡化代碼起見, 故將 ! 單獨處理)

@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

關(guān)閉延遲的環(huán)境變量擴展條件下 確定 半角感嘆號 ! 在表中的位置的代碼

if ! lss # (echo lll) else echo ggg

輸出 lll 表明 ! 小于 #

if ! lss - (echo lll) else echo ggg

輸出 ggg 表明 ! 大于 -
- 和 # 之間只剩下一個雙引號 " 感嘆號 ! 和雙引號 " 的大小關(guān)系又如何:

if ^! lss ^" (echo lll) else echo ggg

輸出 lll

if ^! gtr ^" (echo ggg) else echo lll

輸出 lll

if ^! equ ^" (echo ==) else echo ≠

輸出 ≠

以上表明 感嘆號 ! 是小于雙引號 " 的, 所以感嘆號在表中的編號應(yīng)是 03, 而雙引號及后面的所有字符編號全部加1.

到此這篇關(guān)于批處理ASCII字符比較大小實際次序表的文章就介紹到這了,更多相關(guān)ASCII字符比較大小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論