3 votes

Comment comparer 2 chaînes de caractères dans un lot et déterminer si la variable est un alphabet ?

J'ai ce code

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

!Alphabet[]! est un tableau contenant des alphabets.

J'ai essayé de faire écho !TextAlphabet! y !Alphabet[%%a]! et quand ils sont les mêmes, %AlphabetNumber% est toujours la valeur que j'ai définie avant la boucle.

J'ai essayé de vérifier les espaces blancs dans mes variables mais je n'en ai trouvé aucun.

J'ai également essayé d'ajouter les variables dans une balise "".

4voto

William Whyte Points 1036

Si vous voulez vérifier si une variable ne contient que des lettres, vous pouvez utiliser findstr comme ceci :

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

Comment cela fonctionne

La variable est affichée et ensuite canalisation à la findstr qui utilisera un expression régulière pour correspondre aux caractères alphabétiques :

  • ^ correspond au début de la ligne ;
  • [A-Za-z] définit un classe de caractères qui correspond à n'importe quel caractère de A à Z, aussi bien en majuscules qu'en minuscules ;
  • * répète zéro ou plusieurs occurrences de la classe précédente ;
  • $ correspond à la fin de la ligne.

があります。 %errorlevel% La variable sera définie comme suit 0 s'il y a une correspondance, ou 1 autrement. Le site findstr La sortie sera alors redirigée vers nul et donc ignorée.

Références

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X