Member 13446970 Ответов: 3

Как проверить, есть ли в строке все буквы алфавита в javascript


Привет, я совсем новичок в программировании и начинал с JavaScript.
Мне интересно, есть ли способ проверить, содержит ли переменная все буквы алфавита хотя бы один раз.

Что я уже пробовал:

Итак, у меня есть переменная

var string = prompt ("введите сообщение","");

Любопытно, как проверить, есть ли в введенном сообщении каждая буква от А до Я. если да, то предупреждение("все буквы найдены хотя бы один раз")

3 Ответов

Рейтинг:
24

Karthik_Mahalingam

пробовать

var alphabets26 = 'abcdefghijklmnopqrstuvwxyz';
       var input = prompt();
       input = input.toLowerCase();
       var icount = 0;
       for (var i = 0; i < alphabets26.length; i++) {
           var letter = alphabets26[i];
           if (input.indexOf(letter) > -1)
               icount++;
       }
       if (icount == 26)
           alert('All letters found at least once');

       else
           alert('Few letters missing');


Демонстрация : - JSFiddle[^]


Member 13446970

Спасибо. Он работает, как и ожидалось.

Karthik_Mahalingam

добро пожаловать

CPallini

У вас есть буква " z "вместо буквы" x " в строке алфавита26.

Karthik_Mahalingam

:) опечатка, ястребиный глаз

Member 13446970

Не могли бы вы добавить несколько комментариев, например, почему вы использовали там оператор for?

Karthik_Mahalingam

Скрыть   скопировать код

         var alphabets26 = 'abcdefghijklmnopqrstuvwzyz'; // reference string to compare        var input = prompt(); // read the input from user        input = input.toLowerCase(); // convert to lower case to find exact match        var icount = 0; // counter to check all the letters in alphabets26 are present in input        for (var i = 0; i < alphabets26.length; i++) { // loop each letter in the alphabets26            var letter = alphabets26[i];  // assin the letter to a variable            if (input.indexOf(letter) > -1)  // check if the letter is present in the input                icount++; // if yes then increament the counter        } // the loop will run for 26 letter        if (icount == 26)   // check if the counter is equal to 26, meaning all the letters are present            alert('All letters found at least once');                    else  // else condition            alert('Few letters missing'); 



скопируйте вставьте этот код в редактор кода и посмотрите

Member 13446970

почему у нас переменная icount установлена в 0 и как она проверяет наличие букв из алфавитов 26 во входных данных?
Я понимаю идею цикла for, но почему он не for (var icount = 0 ...)?

Karthik_Mahalingam

это означает, что переменная icount рассматривается как целое число,
в javascript у нас нет int, float, string и т. д..
пройти через это
Типы Данных JavaScript[^]

Member 13446970

Прекрасно, спасибо за терпение!

Karthik_Mahalingam

добро пожаловать

Member 13446970

И последний вопрос: почему input. indexOf (letter) должен быть > -1 ?

Karthik_Mahalingam

Если буква присутствует на входе, она вернет позицию (от 0 до n) буквы на входе..
Если нет, то он вернет -1

Рейтинг:
2

CPallini

Вы можете легко реализовать себя, например

var exists =  [];

var s = "abcdefoo"; // the input string


for (var i=0; i < s.length; ++i)
{
  exists[s[i]] = 1;
}


for ( var i = 97; i<=122; ++i) // loop over all lowercase characters
{
  c = String.fromCharCode(i);
  if ( !exists[c])
  {
    alert(  c + " is missing");
    break;
  }
}


Рейтинг:
2

Thanks7872

Еще одно решение

var Your_String= "abcdefghijklmnopqrstuvwxyz";
var Result = Your_String.replace(' ','').split('').filter(function(item, i, ar){ return ar.indexOf(item) === i; }).join('');
document.writeln(Result.length == 26 ? "All used" : "Some missing");

Использовать : javascript-отображение уникальных символов в строке только один раз - переполнение стека[^]


Member 13446970

Попробовал это сделать, но он просто выскочит сообщение Все используется

Thanks7872

Это просто пример. Как только вы получите длину, вы можете использовать ее так, как хотите.

Member 13446970

а ну понятно. Овации