我正在尝试使用两个参数创建一个函数,该参数将计算字符在给定字符串中重复的次数。我的代码如下,但它无法正常工作。另外,我试图使它成为一个非递归函数。任何人都可以帮我吗?
function count(char,word) {
var a,b;
a= char
b= word
c= b.indexof(a)
return c
}
count('a','apple')
答案 0 :(得分:5)
要计算另一个字符串中出现的字符串,可以使用前者作为分隔符split
后者,然后使用length
计算返回数组的项目。
function count(char, word) {
return word.split(char).length - 1;
}
答案 1 :(得分:4)
如果您的问题的意思是"单词中出现了多少个给定字符"那么有几种可能性。你可以循环调用.indexOf()
,你可以让正则表达式找到所有的匹配,或者你可以手动迭代字符串比较。
如果您的问题意味着不同,请澄清问题。
以下是一些可能性:
function count(char, word) {
var cntr = 0;
var pos = 0;
while ((pos = word.indexOf(char, pos)) !== -1) {
++cntr;
++pos;
}
return cntr;
}
var cnt = count('a','apple');
document.write(cnt + "<br>");
cnt = count('p','apple');
document.write(cnt);
&#13;
或者,如果您的角色不是特殊的正则表达式字符,则可以使用正则表达式:
function count(char, word) {
var cnt = word.match(new RegExp(char, "g"));
return cnt ? cnt.length: 0;
}
var cnt = count('p', 'apple');
document.write(cnt);
&#13;
或者,您可以遍历字符串并手动计算:
function count(char, word) {
var cnt = 0;
for (var i = 0; i < word.length; i++) {
if (word.charAt(i) === char) {
++cnt;
}
}
return cnt;
}
var cnt = count('p', 'apple');
document.write(cnt);
&#13;
答案 2 :(得分:0)
这是一个非常简单的循环,它遍历单词,计算 ch 的实例。
function count(ch,word) {
var i,count = 0;
for(i = 0; i < word.length; i++) {
if (word[i] === ch) count++;
}
return count;
}
console.log(count('p','apple'));
答案 3 :(得分:0)
你需要循环:
function count(c, word) {
var i = 0;
var arr = word.split(''); //break into array
var a;
while (arr.length) { //until array runs out of letters
a = arr.pop(); // pull out one by one
if (a === c) // got match
i++;
}
return i;
}
alert(count('a', 'apple'));
&#13;
答案 4 :(得分:0)
最简单的方法可能只是循环输入。像这样:
function count(char,word) {
var count = 0;
for(var i = 0; i < word.length; i++)
{
if(word.charAt(i) === char)
count++;
}
return count;
}
答案 5 :(得分:0)
以下是使用正则表达式执行此操作的方法:
function countLetter(letter,word) {
var regexp = New RegExp(letter, 'g') //searches word for letter
var arr = word.match(regexp); //finds the letter within the word,
return arr == null ? 0 : arr.length;
} //sticks that letter into arr for each time it
//appears in the word
console.log(countLetter('a','apple a a a '));
//arr = ['a', 'a', 'a', 'a'], arr.length = 4
console.log(countLetter('p','apples'));
//arr = ['p','p'] arr.length = 2
希望这有帮助!
答案 6 :(得分:0)
我会使用累加器函数来简单计算出现次数
function count(char,word) {
return [].reduce.call(word,function(p,c){
return p += char == c ? 1 : 0;
},0);
}
但是,这只适用于总数。为了统计&#34;连续&#34;是非常不同的,需要跟踪重复
function count(char,word) {
var total = 0;
var max = 0;
[].reduce.call(word.substr(1,word.length),function(p,c){
if(p == c && c == char){ total++ }else{
if( total > max ) max = total;
total = 0;
}
return c;
},word[0]);
return max > 0 ? max + 1 : 0;
}