Member 13446970 Ответов: 4

Как проверить, есть ли в строке элементы другой строки


Может быть, я и путаю здесь код, но я пытаюсь обойти его.
Таким образом, эта версия проверяет только длину предложения, но не элементы... Я могу набрать 26 букв А и приму его... Я хочу проверить, есть ли на входе каждый элемент алфавита хотя бы один раз.
ПС: Я новичок в программировании.

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

var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
var input = prompt("Type in a message","");
	for ( i = 0; i < alphabet.length; i++) {
	if(input.includes(alphabet[i])) {
		alert("Bingo");
	} else { 
		alert("Bollocks!");
}
}

4 Ответов

Рейтинг:
32

Patrice T

"Быстрая бурая лиса перепрыгивает через ленивую собаку"
Алгоритм:
Вы знаете, что все буквы не находятся в предложении, когда вы нашли 1 букву, которой нет в предложении.
Вы знаете, что все буквы находятся в предложении, когда вы нашли каждую букву в предложении.

Перевод:

set an answer variable to true
Check each letter in a loop
    if the letter is not in sentence
        answer is false
then after loop, check if answer is true or false and do what you want.
if answer is true
    bingo
else
    Bollocks


Рейтинг:
2

CPallini

var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
var input = prompt("Type in a message","");
var i;
for ( i = 0; i < alphabet.length; i++) 
{
  if(input.includes(alphabet[i]) == false) 
    break;
} 
if ( i == alphabet.length)
  alert("Bingo");
else 
  alert("Bollocks!"); 


Member 13446970

Я проверил это, и он по-прежнему ищет длину строки, а не каждый конкретный элемент в строке.
Если я наберу 26 а это все равно даст мне бинго но то что я хочу это предупредить Бинго только если на входе есть все буквы от А до Я

CPallini

Попробовать это:
https://www.w3schools.com/code/tryit.asp?filename=FK9R31U4M427

Рейтинг:
11

Member 13446970

С помощью GKP1992 я, наконец, нашел способ решить эту проблему.
Я не знаю, верны ли мои комментарии, пожалуйста, поправьте меня, если я ошибаюсь.
Овации,
ОПЕРАЦИЯ.

var alpha = 'abcdefghijklmnopqrstuvwxyz';
var inputQ = prompt("Type in a message", "").toLowerCase(); //transform input to lower case
var occurencePositive = 0;
	for (var i = 0; i < alpha.length; i++) {
		if(inputQ.indexOf(alpha[i]) > -1) // increase counter when match is found in string
			occurencePositive++;
}
	if (occurencePositive == 26) //when counter reaches 26 
		alert("Bingo!");
	else
		alert("Bollocks!"); // when counter is less, meaning missing letters


Рейтинг:
0

GKP1992

Попробовать это,

var occurencePositive = 0;
for(var index = 0; index <alphabet.lenght; index++){
    if(input.IndexOf(alphabet[index]) > -1){
       //increase counter when match is found in string.
       occurencePositive++;
    }
}

if(occurencePositive == alphabet.length - 1){
  alert("Bingo");
} 
else { 
  alert("Bollocks!");
}


Надеюсь, это поможет.


Member 13446970

Так что это было полезно. Немного подправил, понадобилась еще одна переменная, которая присваивает каждой букве алфавита индекс
таким образом, в операторе for раньше, если это необходимо, var называется letters = alphabet[i];
if (input. indexOf (letters) > -1) {
occurencePositive++;

и occurencePositive во 2-м, если утверждение должно быть равно 26.

GKP1992

не вижу необходимости в новой переменной, также для сравнения с 26 мы должны написать индекс <= алфавит.длина в условии цикла for, что мы не можем сделать, потому что алфавит[26] сломается для последнего сравнения. Так как это индекс-алфавит.длина, максимально возможное значение для occurencePositive равно 25 (если все буквы найдены). В любом случае, рад, что это помогло.

Member 13446970

Возможно, я ошибаюсь, но разве индекс не начинается с 0, имея 26 возможных значений для положительного появления? 0, 1, 2,..., 25 ?

GKP1992

Да, и мы проверяем только конечное значение.

Member 13446970

Попробуйте код, который я опубликовал ниже.
если вы используете occurencePositive == alpha. length-1, а затем набираете "быстрая бурая лиса перепрыгивает через ленивую собаку", то это будет выглядеть как чушь, даже если в предложении есть все буквы из Альфа.

GKP1992

Странный.