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 相关文章推荐
javascript Array.prototype.slice使用说明
Oct 11 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 Javascript
悬浮数字的实现案例
Feb 19 Javascript
JavaScript面向对象编程入门教程
Apr 16 Javascript
JavaScript中Function()函数的使用教程
Jun 04 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
使用plupload自定义参数实现多文件上传
Jul 19 Javascript
防止重复发送 Ajax 请求
Feb 15 Javascript
基于JS实现仿百度百家主页的轮播图效果
Mar 06 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 Javascript
vue地区选择组件教程详解
May 04 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
Apr 19 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
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP7变量处理机制修改
2021/03/09 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
wxPython实现整点报时
2019/11/18 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
Python如何输出警告信息
2020/07/30 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
幼儿园保育员辞职信
2014/01/12 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
三个儿子教学反思
2014/02/03 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
英文产品推荐信
2015/03/27 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
MySQL创建管理LIST分区
2022/04/13 MySQL