web-dev-qa-db-ja.com

2つの文字列をバッチで比較し、変数がアルファベットかどうかを判断する方法

私はこのコードを持っています

for /l %%a in (0, 1, 25) do (
if /i !TextAlphabet!==!Alphabet[%%a]! (
set AlphabetNumber=%%a
)
)

!Alphabet[]!はアルファベットを含む配列です。

エコーしてみました!TextAlphabet!および!Alphabet[%%a]!そしてそれらが同じであるとき、%AlphabetNumber%は、ループの前に設定した値です。

変数の空白をチェックしようとしましたが、見つかりませんでした。

また、「」タグに変数を追加してみました。

3
SlonCHL

変数に文字のみが含まれているかどうかを確認する場合は、次のようにfindstrを使用できます。

set var=Abc
echo %var%|findstr "^[A-Za-z]*$" >nul
if %errorlevel% == 0 (echo Variable is alphabetical)

使い方

変数がエコーされ、 pipedfindstrコマンドに送られます。このコマンドは、 正規表現 を使用してアルファベット文字を照合します。

  • ^は行頭に一致します。
  • [A-Za-z]は、大文字と小文字の両方で、AからZまでの任意の文字に一致する 文字クラス を定義します。
  • *は前のクラスの0回以上のオカレンスを繰り返します。
  • $は行末に一致します。

一致する場合は%errorlevel%変数が0に設定され、一致しない場合は1に設定されます。 findstr出力はnulにリダイレクトされるため、無視されます。

参考文献

4
and31415