Javascript 如何检查字符串是否只包含数组中的字符?
我试图检查一个单词(Javascript 如何检查字符串是否只包含数组中的字符?,javascript,arrays,regex,string,Javascript,Arrays,Regex,String,我试图检查一个单词(wordToCheck)是否只包含数组中的字母(letters),并且是否只包含数组中每个字母的频率(或者说不超过它们在数组中的次数),因为它实际上在数组中 下面是所需函数应返回的示例: checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]) === true checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"
wordToCheck
)是否只包含数组中的字母(letters
),并且是否只包含数组中每个字母的频率(或者说不超过它们在数组中的次数),因为它实际上在数组中
下面是所需函数应返回的示例:
checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]) === true
checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"]) === false
我怎样才能使这个代码工作
function checkIfWordContainsLetters(wordToCheck, letters) {
var lettersToString = letters.toString();
var lettersTrimmed = lettersToString.replace(/,/gi, "?");
var regEx = new RegExp(lettersTrimmed, "gi");
if (wordToCheck.match(regEx)!== null) {
return true;
}
else return false;
}
只要它不是长字符串的最佳解决方案,而使用一些巧妙的正则表达式显然更好,它就适用于没有空格的短字符串
function checkIfWordContainsLetters(word, letters){
word = word.toLowerCase().split('');
for(var i = 0; i < letters.length; i++) {
var index = word.indexOf( letters[i].toLowerCase() );
if( index !== -1 ) {
// if word contains that letter, remove it
word.splice( index , 1 );
// if words length is 0, return true
if( !word.length ) return true;
}
}
return false;
}
checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]); // returns true
checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"]); // returns false
函数checkIfWordContainsLetters(单词、字母){
word=word.toLowerCase().split(“”);
对于(变量i=0;i
只要它不是长字符串的最佳解决方案,而使用一些巧妙的正则表达式显然更好,它就适用于没有空格的短字符串
function checkIfWordContainsLetters(word, letters){
word = word.toLowerCase().split('');
for(var i = 0; i < letters.length; i++) {
var index = word.indexOf( letters[i].toLowerCase() );
if( index !== -1 ) {
// if word contains that letter, remove it
word.splice( index , 1 );
// if words length is 0, return true
if( !word.length ) return true;
}
}
return false;
}
checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]); // returns true
checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"]); // returns false
函数checkIfWordContainsLetters(单词、字母){
word=word.toLowerCase().split(“”);
对于(变量i=0;i
您可以使用此ES6功能:
函数checkIfWordContainsLetters(wordToCheck,字母){
return!letters.reduce((a,b)=>a.replace(b',),wordToCheck.toLowerCase()).length;
}
log(checkIfWordContainsLetters(“google”,“a”,“o”,“o”,“g”,“g”,“l”,“e”,“x”));
log(checkIfWordContainsLetters(“google”,“a”,“o”,“g”,“g”,“l”,“e”,“x”))代码>您可以使用此ES6功能:
函数checkIfWordContainsLetters(wordToCheck,字母){
return!letters.reduce((a,b)=>a.replace(b',),wordToCheck.toLowerCase()).length;
}
log(checkIfWordContainsLetters(“google”,“a”,“o”,“o”,“g”,“g”,“l”,“e”,“x”));
log(checkIfWordContainsLetters(“google”,“a”,“o”,“g”,“g”,“l”,“e”,“x”))
为什么要替换(/,/gi,“?”)
:这似乎实现了一条您在问题中没有解释的规则。@trincot因为Array.prototype.toString
使用逗号作为默认分隔符。噢,哇,是的,谢谢@MikeMcCaughan。非常奇怪的做事方式;-)javascript使用toString方法返回如下数组:“a,o,o,g,g,l”,所以我必须去掉所有的“,”。我想检查不区分大小写(因此我)。我还以为我会把它放进去?在每个字母之后,regExp都能正常工作。很抱歉没有提及此事。谢谢你的回答!好的,我也在答案中添加了不区分大小写的选项,假设您的字母数组已经全部用小写。为什么要替换(/,/gi,“?”):这似乎实现了一个您在问题中没有解释的规则。@trincot因为array.prototype.toString
使用逗号作为默认分隔符。哦,哇,是的,谢谢@Mikemcaughan。非常奇怪的做事方式;-)javascript使用toString方法返回如下数组:“a,o,o,g,g,l”,所以我必须去掉所有的“,”。我想检查不区分大小写(因此我)。我还以为我会把它放进去?在每个字母之后,regExp都能正常工作。很抱歉没有提及此事。谢谢你的回答!好的,我也在答案中添加了不区分大小写的选项,假设你的字母数组已经全部用小写了。非常感谢你的回答!我马上在我的代码里查出来。谢谢你的回答!我会马上在我的代码里查出来的。太棒了!我也会在我的代码中尝试一下。这也是我的第一个想法,但后来我对所有这些regexp感到困惑,我想尝试一下。无论如何,太多了!希望它能帮助你:)到目前为止,它在我的代码中有效,但我必须做一些mre尝试,因为我的“解决方案”对某些人也有效。再次感谢您,我当然不会忘记在完成课程测试后立即将其标记为已回答。请向我展示我的代码失败的测试示例(如果有的话)。我在最近的编辑中还添加了案例不敏感,如果有案例的话。非常感谢!我也会在我的代码中尝试一下。这也是我的第一个想法,但后来我对所有这些regexp感到困惑,我想尝试一下。无论如何,太多了!希望它能帮助你:)到目前为止,它在我的代码中有效,但我必须做一些mre尝试,因为我的“解决方案”对某些人也有效。再次感谢您,我当然不会忘记在完成课程测试后立即将其标记为已回答。请向我展示我的代码失败的测试示例(如果有的话)。我还在最近的编辑中添加了案例不敏感,如果有案例的话。