如何至少检查一个字符串是否包含另一个字符串的所有元素

时间:2017-10-06 09:35:32

标签: javascript

我对编程很新,只是学习JavaScript。 这是我尝试过但它实际上检查字符串的长度而不是输入中的元素是否与字母表中的元素匹配。我正在尝试解决包含命令:

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!");  
    }  
} 

3 个答案:

答案 0 :(得分:1)

我在您的代码中看到的主要问题是,您将为字母数组中的每个字母发出警报。在此代码中,您有一个命中变量,设置为false,如果它成功,将设置为true。

我的方法使用indexOf,它检查输入是否有字母数组中当前指向字母的任何字母。如果是,则返回它的实际索引。如果没有,则返回-1:

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 hit = false;

for( var letter in alphabet ){
    if( input.indexOf(alphabet[letter]) !== -1 ){
        hit = true;
    }
}

if( hit ){ alert( "Bingo" ); }
else { alert( "Bollocks!" ); }

请注意代码区分大小写。所以M不会匹配任何东西。您可以使用toLowerCase方法

解决此问题

答案 1 :(得分:0)

我不确切地知道你的意思。看看这个小提琴。我想这就是你的意思。我添加了一个变量宾果并在最后显示Bollock警报。

Fiddle

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 bingo = false
for (i = 0; i < alphabet.length; i++) {
    if (input == (alphabet[i])) {
        bingo = true
        alert("Bingo");
}
}
if (bingo == false) {
     alert("Bollok")
}

答案 2 :(得分:0)

我不确定你在做什么你试图检查你输入的东西是否与英文字母的小写字母或什么相匹配?

但通常正则表达式是一种很好的方法:

  • 第1步 - 建立一个你需要匹配的正则表达式

  • 第2步 - 检查其他内容是否匹配

如果你需要检查输入中的每个字符都是一个小写的英文字母

var input = "aahahahaaa"; // try with "nope,nomatch!"
var regex = new RegExp("[a-z]" + "{" +  input.length + "}");
console.log(regex);
if (input.match(regex) !== null) console.log("YUP CHAMP")
else console.log("NOPE BLOKE")

如果您需要匹配其他字符,只需修改正则表达式即可。我无法涵盖所有​​案例,但这里有一些供您测试:

小写和大写字母:

 var regex = new RegExp("[a-zA-Z]" + "{" +  input.length + "}");

对于上面和空格

var regex = new RegExp("[a-zA-Z\s]" + "{" +  input.length + "}");

对于上面和数字

var regex = new RegExp("[0-9a-zA-Z\s]" + "{" +  input.length + "}");

快速,干净,可以处理非常复杂的匹配规则。 专业人士就是这样做的;)

以下是:fiddle

这是一个关于正则表达式的好教程: regexone

当你学习时,你可以在游乐场测试正则表达式: playground

欢迎来到真正的正则表达世界:)