Bagaimana membandingkan 2 string dalam batch dan menentukan apakah variabel adalah huruf

3

Saya punya kode ini

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

!Alphabet[]! adalah array yang mengandung huruf.

Saya mencoba menggema !TextAlphabet!dan !Alphabet[%%a]!dan ketika mereka sama, %AlphabetNumber%masih nilai yang saya tetapkan sebelum loop.

Saya mencoba memeriksa spasi putih di variabel saya tetapi tidak menemukannya.

Saya juga mencoba menambahkan variabel dalam tag "".

SlonCHL
sumber
Pertanyaan ini tampaknya di luar topik karena ini tentang pemrograman dan termasuk dalam Stack Overflow . Coba stackoverflow.com/help/how-to-ask
Kevin Panko
5
@KevinPanko Pertanyaannya bagus di sini. Kami mengizinkan pertanyaan skrip yang berkaitan dengan lingkungan pengguna dan administrasi sistem.
slhck

Jawaban:

4

Jika Anda ingin memeriksa apakah suatu variabel hanya berisi huruf yang dapat Anda gunakan findstr, seperti ini:

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

Bagaimana itu bekerja

Variabel digaungkan dan kemudian disalurkan ke findstrperintah, yang akan menggunakan ekspresi reguler untuk mencocokkan karakter alfabet:

  • ^ cocok dengan awal baris;
  • [A-Za-z]mendefinisikan kelas karakter yang cocok dengan karakter apa pun dari A hingga Z, baik huruf besar dan kecil;
  • * mengulangi nol atau lebih kejadian dari kelas sebelumnya;
  • $ cocok dengan garis akhir.

The %errorlevel%variabel akan ditetapkan ke 0jika ada pertandingan, atau 1sebaliknya. The findstroutput akan kemudian diarahkan ke nul, sehingga diabaikan.

Referensi

and31415
sumber