Como comparar 2 strings em lote e determinar se a variável é alfabetos

3

Eu tenho esse código

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

!Alphabet[]! é uma matriz que contém alfabetos.

Eu tentei ecoar !TextAlphabet! e !Alphabet[%%a]! e quando eles são iguais, %AlphabetNumber% ainda é o valor que eu configurei antes do loop.

Eu tentei verificar espaços em branco nas minhas variáveis, mas não encontrei nenhuma.

Eu também tentei adicionar as variáveis em uma tag "".

    
por SlonCHL 22.02.2014 / 07:31

1 resposta

4

Se você quiser verificar se uma variável contém apenas letras, você pode usar findstr , assim:

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

Como funciona

A variável é ecoada e depois canalizada para o comando findstr , que usará um expressão regular para corresponder a caracteres alfabéticos:

  • ^ corresponde ao início da linha;
  • [A-Za-z] define uma classe de caracteres que corresponde a qualquer caractere de A a Z, em maiúsculas e minúsculas; / li>
  • * repete zero ou mais ocorrências da classe anterior;
  • $ corresponde ao fim da linha.

A variável %errorlevel% será definida como 0 se houver uma correspondência ou 1 caso contrário. A saída findstr será então redirecionada para nul , portanto, ignorada.

Referências

por 22.02.2014 / 14:05