javascript框架设计读书笔记之字符串的扩展和修复


Posted in Javascript onDecember 02, 2014

1.repeat方法:将一个字符串重复自身n次。比如:repeat("chaojidan",2)   -> chaojidanchaojidan

方法1:

function repeat(str,n){
return Array.prototype.join.call({length:n+1},str);  

//在类数组{length:n+1}上下文下执行join方法,并传入str。也就是用str来分隔类数组的选项,类数组是空,所以就有n个str分隔n+1个"",得到的结果就是n个str连接。

}

方法2:

function repeat(str,n){
var s = str ,total = "";

while(n>0){              

//假设n是5,n%2后,等于1,因此total = str.s=strstr。n=2.第二次循环:s=strstrstrstr,n=1.第三次循环total = strstrstrstrstr,break,跳出循环,返回total,刚好是str重复了5次的字符串


if(n%2 ==1){     



total + =s;     //这里是2的0次方,也就是1,所有的正整数,都可以使用1,2,4,8....进行组合。比如:3=1+2,5=1+4,7=1+2+4.


}


if(n==1)
break;


s+=s;    //这里利用的是2的幂次方,2,4,8.....


n = n>>1;

}

return total ;

}

2.取字符串所有字节的长度:str.charCodeAt(i) >255 就把str的长度加一次就OK了.

3.转换驼峰风格:str.replace(/[-_][^-_]/g,function(match){return match.charAt(1).toUpperCase();}) 

//-_在[]中,不需要使用\,并且^在[]中是代表反的意思,就是遇到-a或_a,就被替换成A(match就是正则匹配的字符串_a,然后取a,并且大写)

4.转换为下划线风格:str.replace(/([a-z\d])([A-Z])/g,'$1_$2').replace(/\-/g,'_').toLowerCase();

//第一个replace,匹配cA,或者4A的字符串,然后用c_A或4_A替换。$1代表第一个子表达式。第二个replace就是使用_替换-。由于-不在[]中,所以需要加\。

5.去掉字符串中的html标签:str.replace(/<[^>]+>/g,''),这里面会把script标签去掉,但是不会去掉script中的js脚本

6.去掉script标签,并且移除里面的js脚本:str.replace(/<script[^>]*>(\S\s)*?)<\/script>/img,'')     

 /需要用\,防止转义。

//(\S\s)*?)尽可能少的匹配,非贪婪匹配。举个例子:<script>aaa</script>dddd<script>bbbb</script>,会先匹配<script>aaa</script>,再匹配<script>bbbb</script>,如果没加?,将是贪婪匹配,将会把<script>aaa</script>dddd<script>bbbb</script>全部匹配掉,连字符串dddd都去掉了。

7.将字符串经过html转义,得到适合在页面中显示的内容.

str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');

8.将字符串的html实体字符换成对应字符:

跟7相反,只是多了一个replace(/&#([\d]+);/g,function($0,$1){

return String.fromCharCode(parseInt($1,10))  })   //$1就是第一个子表达式匹配项。

9.trim:str.replace(/^\s+ | \s+$/g,'')   ,IE或早期的标准浏览器,把许多本属于空白的字符没有列为\s中,因此会有bug。不过,又何必执着兼容淘汰的浏览器呢。

Javascript 相关文章推荐
如何将JS的变量值传递给ASP变量
Dec 10 Javascript
js动态设置鼠标事件示例代码
Oct 30 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
利用js获取下拉框中所选的值
Dec 01 Javascript
xmlplus组件设计系列之树(Tree)(9)
May 02 Javascript
js插件实现图片滑动验证码
Sep 29 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
May 30 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 Javascript
layui table单元格事件修改值的方法
Sep 24 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 #Javascript
javascript框架设计读书笔记之种子模块
Dec 02 #Javascript
推荐一个封装好的getElementsByClassName方法
Dec 02 #Javascript
CSS3,HTML5和jQuery搜索框集锦
Dec 02 #Javascript
JavaScript和CSS交互的方法汇总
Dec 02 #Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 #Javascript
javascript函数声明和函数表达式区别分析
Dec 02 #Javascript
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
如何使用PHP往windows中添加用户
2006/12/06 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
Javascript事件实例详解
2013/11/06 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python面向对象 反射原理解析
2019/08/12 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
如何用Django处理gzip数据流
2021/01/29 Python
酒店值班经理的工作职责范本
2014/02/18 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS