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 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
javascript XMLHttpRequest对象全面剖析
Apr 24 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
js实现星星打分效果的方法
Jul 05 Javascript
浅谈Jquery核心函数
Jun 18 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
Jul 01 Javascript
js实现二级菜单渐隐显示
Nov 03 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
Javascript中神奇的this
Jan 20 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 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
重置版宣传动画
2020/04/09 魔兽争霸
新版PHP极大的增强功能和性能
2006/10/09 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
详解PHP PDO简单教程
2019/05/28 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
python 用下标截取字符串的实例
2018/12/25 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
小学教师师德反思
2014/02/03 职场文书
高中军训感言200字
2014/02/23 职场文书
新闻发布会主持词
2014/03/28 职场文书
2014年党课学习材料
2014/05/11 职场文书
员工生日活动方案
2014/08/24 职场文书
个人授权委托书模板
2014/09/14 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
会计专业自荐信范文
2019/05/22 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python