javascript框架设计读书笔记之字符串的扩展和修复
作者:bea
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分
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-zd])([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[^>]*>(Ss)*?)</script>/img,'')
/需要用,防止转义。
//(Ss)*?)尽可能少的匹配,非贪婪匹配。举个例子:<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。不过,又何必执着兼容淘汰的浏览器呢。
有用 | 无用
方法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-zd])([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[^>]*>(Ss)*?)</script>/img,'')
/需要用,防止转义。
//(Ss)*?)尽可能少的匹配,非贪婪匹配。举个例子:<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简单实现图片预加载
- 3种Jquery限制文本框只能输入数字字母的方法
- javascript引擎长时间独占线程造成卡顿的解决方案
- javascript中clone对象详解
- javascript使用正则表达式检测IP地址
- Javascript快速排序算法详解
- Javascript冒泡排序算法详解
- Javascript堆排序算法详解
- node.js下when.js 的异步编程实践
- nodejs下打包模块archiver详解
- jquery操作 iframe的方法
- 使用js实现数据格式化
- 使用js获取图片原始尺寸
- 上传文件返回的json数据会被提示下载问题解决方案
- 使用jQuery实现验证上传图片的格式与大小
- 使用正则表达式的格式化与高亮显示json字符串
- jquery中获取元素里某一特定子元素的代码
- JS逆序遍历实现代码
- javascript框架设计读书笔记之数组的扩展与修复