如果用JS得到字符串中出现次数最多的字母

作者:Blank 来源:怿飞's Blog 时间:2007-12-03 21:01:00 

网上有这样一道题目:


一个字符串String=“adadfdfseffserfefsefseetsdg”,找出里面出现次数最多的字母和出现的次数。


经典的解答思路为:取出字符串的第一个字符(首字母),利用的字符串的replace方法将符合正则表达式(第一个字符)替代为空,此字母出现的次数为原始的字符串长度减去替代后的字符串长度。循环迭代找出长度最长的字母。什么是正则表达式?正则表达式30分钟入门教程


<script type="text/javascript">
//<![CDATA[

var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
var result = ''; //命名一个变量放置结果输入

while( str != '' ){ //循环迭代开始,并判断字符串是否为空
  oldStr = str; //将原始的字符串变量赋值给新变量
  getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母)
  eval("str = str.replace(/"+getStr+"/g,'')"); //详细如补充

  if( oldStr.length-str.length > maxLength ) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
 maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度
 result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
 }
}

alert(result) //弹出结果

//]]>
</script>

补充:


eval("str = str.replace(/"+getStr+"/g,'')");


可能很多人想这样写str = str.replace(/getStr/g,''),可结果却是会出错的。为什么呢,在这句中正则表达式匹配的是getStr字符串,而不是getStr指向的首字母。通过eval方法可以避免(首先getStr得到指向的首字母,用字符串连接"str = str.replace(/"+getStr+"/g,'')",最后在eval中执行这段代码,即:先解释Javascript代码,然后再执行它)。
PS: 小马 指出eval性能不好,容易出错,而且可读性不好。建议将eval("str = str.replace(/"+getStr+"/g,'')")改为:


str = str.replace(new RegExp(getStr,"g"),"")


相关文章正则表达式语法速查

标签:字符串,字母,正则
0
投稿

猜你喜欢

  • 基于Python中求和函数sum的用法详解

    2022-12-05 23:26:18
  • 一篇文章带你了解python标准库--math模块

    2021-02-22 07:35:12
  • 使用 vue 实例更好的监听事件及vue实例的方法

    2024-05-21 10:15:55
  • Python EOL while scanning string literal问题解决方法

    2021-01-20 23:58:38
  • 基于PHP实现一个简单的在线聊天功能

    2024-05-03 15:52:38
  • Python爬虫分析微博热搜关键词的实现代码

    2022-11-29 16:13:44
  • Pandas把dataframe或series转换成list的方法

    2022-03-24 23:05:02
  • python 利用 PIL 将数组值转成图片的实现

    2021-03-28 07:17:13
  • python如何制作英文字典

    2021-12-01 10:30:00
  • python实现求最长回文子串长度

    2022-09-29 13:56:32
  • php根据分类合并数组的方法实例详解

    2024-05-11 10:08:05
  • 19个MySQL性能优化要点解析

    2024-01-18 16:03:14
  • Oracle9i 动态SGA,PGA特性探索

    2009-04-24 12:39:00
  • 如何写一个通用的JavaScript效果库!(2/2)

    2024-04-10 11:02:22
  • 4款Javascript放大镜特效脚本

    2009-10-14 20:46:00
  • 比较简单的异步加载JS文件的代码

    2009-07-06 13:13:00
  • VUE 实现一个简易老虎机的项目实践

    2024-05-10 14:19:17
  • python爬取之json、pickle与shelve库的深入讲解

    2023-11-05 00:58:35
  • MySQL limit性能分析与优化

    2024-01-17 09:26:49
  • python绘制评估优化算法性能的测试函数

    2022-10-18 20:13:20
  • asp之家 网络编程 m.aspxhome.com