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

2016-02-19 17:11 53 1 收藏

下面是个如何用JS得到字符串中出现次数最多的字母教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - Web开发 】

  网上有这样一道题目:

  Quote:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

script type="text/javascript"//![CDATA[var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0var 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"),"")

来源:http://www.tulaoshi.com/n/20160219/1614447.html

延伸阅读
获取字符串中的汉字拼音首字母(根据http://blog.csdn.net/iwebsms/archive/2004/09/28/119851.aspx修改) 可能代码比较臃肿,希望有朋友再帮忙改正   //返回给定字符串的首字母   private String IndexCode(String IndexTxt)   {    String _Temp=null;  &nb...
create or replace procedure ModifyLadingItemPack (   ASoditemguid varchar2,                  --合同电子仓单明细GUID   ALadingitemGUID varchar2,             &nb...
Delphi中的字符串 ——摘自网络 一:各种字符串  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的...
标签: MySQL mysql数据库
  对于针对字符串位置的操作,第一个位置被标记为1。 ASCII(str) 返回字符串 str 的最左面字符的ASCII代码值。 如果 str 是空字符串,返回 0 。如果 str 是 NULL ,返回 NULL 。 mysql select ASCII('2'); - 50mysql select ASCII(2); - 50mysql select ASCII('dx'); - 100 也可参见ORD()函...
标签: Web开发
    标题可能不太清楚,实现的功能如下:我爱中国-WAZG  1。汉字字符与英文字母之间区别      标准的asc表不包含汉字字符,因为一个asc字符只有1byte,就是8bit,8bit所能代表的数字范围,如果是有符号的好,因该为-128-127,无符号的话,应该为0-255。而我们知道,一个汉字字符,应该占有2个b...

经验教程

503

收藏

66
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部