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 相关文章推荐
form中限制文本字节数js代码
Jun 10 Javascript
javascript闭包的理解和实例
Aug 12 Javascript
jQuery示例收集
Nov 05 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
vue.js初学入门教程(2)
Nov 07 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
Mar 01 Javascript
JavaScript函数柯里化原理与用法分析
Mar 31 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
May 27 Javascript
浅谈js中的bind
Mar 18 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图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python实现的简单算术游戏实例
2015/05/26 Python
详解python进行mp3格式判断
2016/12/23 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
中科软测试工程师面试题
2012/06/16 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
安全标准化汇报材料
2014/02/03 职场文书
政府个人对照检查材料
2014/08/28 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
2014年妇女工作总结
2014/12/06 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis