Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何构建搜索字符串出现的函数?_Javascript_Loops_Find Occurrences - Fatal编程技术网

Javascript 如何构建搜索字符串出现的函数?

Javascript 如何构建搜索字符串出现的函数?,javascript,loops,find-occurrences,Javascript,Loops,Find Occurrences,我需要帮助编写一个函数subLength(),该函数包含两个参数,一个字符串和一个字符。函数应该在字符串中搜索字符的两个匹配项,并返回它们之间的长度,包括两个字符。如果字符出现次数少于2次或多于2次,则函数应返回0。如何使用循环解决此问题 subLength('Saturday', 'a'); // returns 6 subLength('summer', 'm'); // returns 2 subLength('digitize', 'i')

我需要帮助编写一个函数subLength(),该函数包含两个参数,一个字符串和一个字符。函数应该在字符串中搜索字符的两个匹配项,并返回它们之间的长度,包括两个字符。如果字符出现次数少于2次或多于2次,则函数应返回0。如何使用循环解决此问题

        subLength('Saturday', 'a'); // returns 6
        subLength('summer', 'm'); // returns 2
        subLength('digitize', 'i'); // returns 0
        subLength('cheesecake', 'k'); // returns 0

您可以尝试以下逻辑:

  • 循环字符串并计算发生次数
  • 如果计数为2,
    • 创建一个正则表达式以捕获中间的字符串
    • 返回其长度
  • 否则返回0
函数子长度(str,char){
设长度=0;
const occuranceCount=数组
.from(str)
.filter((c)=>c.toLowerCase()==char.toLowerCase())
.长度
如果(发生次数=2){
const regex=new RegExp(`${char}(.*${char}`)
长度=str.match(regex)[0]。长度
}
console.log(长度)
返回长度;
}
次级长度(‘星期六’、‘a’);//返回6
子长度('summer','m');//返回2
子长度(‘数字化’、‘i’);//返回0

子长度('cheesecake','k');//返回0
在这里,我循环遍历字符串的字符,以查找每个字符值

  • 如果长度不是2,则返回0
  • 使用slice,只获取两个找到的索引中的字符,并将该长度加上一个以修复偏移量
const subLength=(str,char)=>{
设strChars=str.toLowerCase().split(“”),
找到=[],
长度=0;
strChars.forEach((val,index)=>{
如果(val==char){
发现.推送(索引);
}
});
如果(找到。长度!=2){
返回长度;
}
返回str.slice(找到[0],找到[1])。长度+1;
}
console.log(子长度('Saturday','a');//返回6
console.log(子长度('summer','m');//返回2
console.log(子长度('digitalize','i');//返回0

console.log(子长度('cheesecake','k'));//返回0
我得到的答案是:

const subLength=(str,char)=>{
设charCount=0;
设len=-1;
for(设i=0;i=2){
返回0;
}
如果(len==-1){
len=i;
}否则{
len=i-len+1
}
}
}
if(字符数<2){
返回0;
}
回程透镜;

};@Yousaf,这不会有帮助。indexOf给出位置而不是计数这看起来像是家庭作业?!这个问题不是很清楚。你能解释一下你给出的例子之间的逻辑吗?@Rajesh OP需要字符串中某个特定字符两次出现之间的字符数
indexOf
可以用两次来查找两个匹配项,然后用一个简单的数学来知道两个索引之间的字符数。非常感谢@Rajesh,我将努力解决您的问题,尝试找出逻辑,我只是尝试使用lopp。