获取字符串中含有某后缀的单词

首先先感谢美女耐心的帮我看了一个多小时。。真的很感谢。。
好了 说一下本题的需求:

大致是扩展String,完成getSuffixList方法,使其找出所有包含指定后缀的单词,以及记录单词出现的次数,最终返回按倒序排列次数的单词。
例如:
字符串:“careful beautiful beautiful aful careful beautiful”
后缀:ful
输出结果:"beautiful=3,careful=2,aful=1"

String.prototype.getSuffixList = function(suffix){
    var result = "";
    var reg = new RegExp("^[A-Za-z]+("+suffix+")$");
    console.log(reg); //  正则为 /^[A-Za-z]+(ful)$/
    var arr = this.split(" ");  //将字符串用空格分成数组
    var obj = {}; //创建一个对象存放符合的字符串和对应的次数
  
    //知识点1:reg.exec()有一个细节,大概磨蹭了快一个小时,就因为在数组内使用了/g的正则
    //reg.exec()在没有/g的情况下匹配当前单词
    //reg.exec()在有/g的情况下在字符串内匹配所有单词
    for(var i=0;i<arr.length;i++){ //循环遍历数组
        let str;
        if (reg.exec(arr[i])) {
          str = reg.exec(arr[i])[0];
        } else {
          console.log('-----', arr[i])
        }
        console.log(str); // 所匹配到的单词
        if (!obj[str]) { 
          obj[str] = 1;
        } else {  // 原本有该单词则次数+1
          obj[str]++;
        }
    }
  
  console.log(obj); //输出所有匹配的单词及次数
 //[object Object] {
 //   aful: 1,
 //   beautiful: 3,
 //  careful: 2
 // }

 //知识点2:根据对象中的属性进行排序
  var c = Object.keys(obj).sort(function(a,b){
    return obj[b]-obj[a];
  }); //逆序后 返回为数组 ["beautiful", "careful", "aful"]

  var array = []; //存放结果数组
  if ( c.indexOf('undefined') >= 0) {
    c.splice(c.indexOf('undefined'),1);
  }
  for(var i = 0; i < c.length; i++){
      for(var key in obj){
        if(c[i] == key){
          array.push(key+"="+obj[key]);
          break;
        }
      }
  }
  return array.join(",");//将结果数组转成字符串用,分割
};
console.log("careful beautiful beautiful aful careful beautiful".getSuffixList('ful'));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 英语中常见的后缀 一、名词性后缀 1,-age为抽象名词后缀,表示行为,状态和全体总称 percentage百分数...
    刘轻语阅读 14,124评论 4 36
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,793评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • 今天尝试一直不敢的瑜伽,感觉很不错 睡前腌制了小黄瓜 人生不设限 认真对待每一天[月亮]^_^
    蔓ma阅读 194评论 0 0
  • 小六啊小六,今天是你失而复得的第一天。我想饿你半天。好让你知道除了我,你吃不了饭。以后再飘走,别人打电话,我也不去...
    小王很厉害阅读 185评论 0 0