3

У меня есть этот код

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

!Alphabet[]! массив, содержащий алфавиты

Я попытался повторить !TextAlphabet! и !Alphabet[%%a]! и когда они одинаковы, %AlphabetNumber% по-прежнему является значением, которое я установил перед циклом.

Я попытался проверить пробелы в моих переменных, но не нашел ни одного.

Я также попытался добавить переменные в тег "".

1 ответ1

4

Если вы хотите проверить, содержит ли переменная только буквы, вы можете использовать findstr , например так:

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

Как это устроено

Переменная выводится и затем передается в команду findstr , которая будет использовать регулярное выражение для сопоставления букв алфавита:

  • ^ соответствует началу строки;
  • [A-Za-z] определяет класс символов, который соответствует любому символу от A до Z, как в верхнем, так и в нижнем регистре;
  • * повторяет ноль или более вхождений предыдущего класса;
  • $ соответствует концу строки.

%errorlevel% будет установлена в 0 если есть совпадение, или в 1 противном случае. Выходные данные findstr будут перенаправлены на nul , поэтому игнорируются.

Рекомендации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .