统计某一字符或字符串在另一个字符串中出现的次数(js)

来源博客:【Harryの心阁

第七天

  • 题目来源: 前端每日知识3+1

Javascript题目

题目 : 统计某一字符或字符串在另一个字符串中出现的次数(js)

问题解答

解题思路

  • 统计某一字符或字符串在另一个字符串中出现的次数

正则+去重

  • 将str1中的所有字符进行遍历, 并对应的找出在另一个字符串中的出现的次数
//  统计某一字符或字符串在另一个字符串中出现的次数
let result = []

function countNum(str1, str2) {
  str1 = [...new Set([...str1])] // 对单个字符串中的字符进行去重
  for (let i of str1) {
    //  const reg = new RegExp(param, 'g'); //构造函数的方法
    let itemR = str2.match(eval(`/${i}/g`))
    result.push({
      str: i,
      num: itemR ? Array.from(itemR).length : 0
    })
  }
  return result
}
console.log(countNum("dawds_", "ddddaaaawss"));
/*
0: {str: "d", num: 4}
1: {str: "a", num: 4}
2: {str: "w", num: 1}
3: {str: "s", num: 2}
4: {str: "_", num: 0}
*/

使用split 方法

//  统计某一字符或字符串在另一个字符串中出现的次数
function countNum(str1, str2) {
  return str2.split(str1).length - 1
}
console.log(countNum("da", "ddddaaaawss")); //1

递归思想

  • 原理: 使用indeOf方法(返回索引号)先返回该字符第一次出现的位置, 大于1则将字符串进行分隔使用substring方法(从匹配的索引位置到最后的位置) 也可以使用substr方法 , 进行递归操作
function countNum(str1, str2, count = 0) {
  // return str2.indexOf(str1) !== -1 ? countNum(str1, str2.substring(str2.indexOf(str1) + str2.length), ++count) : count; //substring方法
  return str.indexOf(str1) !== -1 ? countNum(str1, str.substr(str.indexOf(str1) + str1.length, str.length - str.indexOf(str1) + str1.length), ++count) : count;
}
console.log(countNum('d', 'dawdawds'));
  • 详解
let count = 0; // 定义次数 要定义在函数外
function countNum(str1, str) {
  if (str.indexOf(str1) !== -1) {
    let index = str.indexOf(str1) + str1.length // 递归一次后新的字符串的索引位置
    // str = str.substring(index) //substring
    str = str.substr(index, str.length - index) // substr
    count++;
    countNum(str1, str) // 递归
  }
  return count
}
console.log(countNum('dd', 'dawddawdds'));

includes方法

function countNum(str, target) {
  let count = 0;
  while (str.includes(target)) {
    const index = str.indexOf(target);
    count++;
    str = str.substring(index + target.length);
  }
  return count;
}
console.log(countNum('dd', 'dawddawdds'));

知识扩展

  • 正则规则动态赋值 使用eval()方法, eval函数是一种接受字符串作为参数, 并且可以将接受的字符串转换成js表达式并且立即执行该表达式
  • substringsubstr方法 都是截取字符串 第一个的参数为from, to(不包括to) 第二个为from, length 从from开始截取指定长度的字符串, slice(from, to)也可以作用于字符串的切割

公众号:今日在学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Harry-iu

顺手给小编加个鸡腿????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值