簡體   English   中英

如何檢查一個字符串是否至少具有另一字符串的所有元素

[英]How do I check if one string has all elements of the other string at least once

我對編程很陌生,只是學習JavaScript。 這是我嘗試過的方法,但是它實際上檢查字符串的長度,而不是輸入中的元素是否匹配字母中的元素。 我正在嘗試解決include命令:

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

我在代碼中看到的主要問題是,您將針對字母數組中的每個字母發出警報。 在此代碼中,您有一個hit變量,設置為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方法來解決此問題

我不知道你到底是什么意思。 看這個小提琴。 我想這就是你的意思。 我添加了一個變量賓果游戲,並在最后顯示了Bollock警報。

小提琴

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

我不確定您在做什么,是否要檢查輸入的內容是否與英文字母的小寫字母匹配?

但是通常,正則表達式是一種好方法:

  • 第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 + "}");

快速,干凈,可以處理非常復雜的匹配規則。 專業人士就是這樣做的;)

這是: 小提琴

這里是有關正則表達式的一個很好的教程: regexone

和一個操場為你,你要學會測試正則表達式: 操場

歡迎來到正則表達式的美好世界:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM