一括ASCII文字比較サイズ実数表
バッチ処理でASCII文字列のサイズを比較する場合、ASCII文字コード値でサイズを比較すると思われますが、そうではありません。
ここでは、文字列の一括比較において、実際にASCIIの可視文字(コード値32~126)の95文字を00~94までの番号で、番号が小さいほど小さな文字になるように並べた表を示します。
この表を見ると、全体の順番は部分的にASCIIの順番と一致しています。いくつかの特徴があります。
1) すべての句読点は数字文字の前にあり、すべての数字文字は文字の前にある。
数値のうち、対応する数値の大きさでソートする。
アルファベットの場合、異なる文字は大文字小文字に関係なく、アルファベット順で比較します。
④ 同じ文字で、小文字が大文字より小さいこと。
句読点のペアで、左が先、右が後とする。ということです。(未満)、[未満]、{未満}、<未満>
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:{`}
26:{|}
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:{b}
46:{B}
47:{c}
48:{C}
49:{d}
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文字の表を生成し、いくつかの簡単な比較に基づいて、表中のセミ感嘆符の位置を導出します。
表生成のコードでは、選択ソート方式で文字をソートしている。文字列は、特殊文字をエスケープして初期化されます。
先頭のアッパーコロン^でエスケープされる特殊文字は8個です。
"&()<>^|
また、パーセンテージ
%
は独自のダブルケースでエスケープされます。
94文字のシーケンスに加え、半感嘆符「!」を除いたコードを生成(コードを簡略化するために遅延環境変数の拡張をONにしているので「!」は別扱いになっています)
@echo off & setlocal enabledelayedexpansion & cls
(set chrs=^"#$%%^&'^(^)*+,-. /01234 56789:;^<=^>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{^|}~)
echo This is a string consisting of ASCII code values 32--126 ^ (except for the half-exclamation mark ^) with 94 characters:
echo %chrs%
set /p=Press any key to see the initial numbering of these 94 characters... <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=Press any key to see the sorted list of these 94 characters... <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=Press any key to see the full sequence of 95 characters after inserting the half-exclamation mark... <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
半角の感嘆符を決定する遅延環境変数の拡張条件をOFFにする ! 表中の位置を表すコード
if ! lss # (echo lll) else echo ggg
出力された lll は、! が # よりも小さいことを示します。
if ! lss - (echo lll) else echo ggg
出力されたgggは、! が - よりも大きいことを示します。
- と!の間に二重引用符の"感嘆符が1つだけ残っており、大きさの関係はどうなっているのでしょうか。
if ^! lss ^" (echo lll) else echo ggg
lllを出力する
if ^! gtr ^" (echo ggg) else echo lll
出力 lll
if ^! equ ^" (echo ==) else echo ≠.
出力≠ナす。
上記を見ると、感嘆符「!」はダブルクオート「"」より小さいので、表中の感嘆符は03番、ダブルクオート以下はプラス1番とする必要があることがわかります。
ASCII文字比較表の実際の並び順については、今回で終了です。ASCII文字比較の詳細については、スクリプトハウスの過去記事を検索するか、以下の記事を引き続き閲覧してください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Windowsのbatスクリプトコマンドを使用してワンクリックでMySQLサービスを開始する方法
-
バッチ版 chm ファイルデコンパイラ v1.3
-
バッチ関数の効率的な代替アプリケーション(コールフリー)
-
batファイルのpause delayのスクリプトコードを説明する。
-
Windowsの空のフォルダを検索するバッチプログラムのコード例
-
JDKの一括インストール/JREのワンクリックインストールとJava環境変数の自動設定
-
Windowsでbatスクリプトを使用したFTPの時間指定アップロードとダウンロード
-
BATとHTMLのハイブリッドプログラミングの記述方法
-
DOSバッチ処理上級編 第3章 FORコマンドの変数
-
bat, vbs, js ネイティブミックス (bat は vbs, js コードを実行可能)