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 相关文章推荐
ext combox 下拉框不出现自动提示,自动选中的解决方法
Feb 24 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
js实现div闪烁原理及实现代码
Jun 24 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
Dec 04 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
jQuery简单实现中间浮窗效果
Sep 04 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
javascript中的面向对象
Mar 30 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
vue框架搭建之axios使用教程
Jul 11 Javascript
前后端如何实现登录token拦截校验详解
Sep 03 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
我的论坛源代码(三)
2006/10/09 PHP
dedecms系统常用术语汇总
2007/04/03 PHP
PHP4与PHP5的时间格式问题
2008/02/17 PHP
精通php的十大要点(上)
2009/02/04 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
详解php中的implements 使用
2017/06/13 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
python爬虫超时的处理的实例
2018/12/19 Python
Python类继承和多态原理解析
2020/02/05 Python
pandas数据拼接的实现示例
2020/04/16 Python
Python调用飞书发送消息的示例
2020/11/10 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
如何用PHP实现邮件发送
2012/12/26 面试题
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
node中使用shell脚本的方法步骤
2021/03/23 Javascript
药物学专业学生的自我评价
2013/10/27 职场文书
园林资料员岗位职责
2013/12/30 职场文书
任命书怎么写
2015/03/02 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers