字符串的扩展与修复
2016-06-12 21:14
721 查看
方法引自 司徒正美 的<<JavaScript框架设计>>
1、判定一个字符串是否包含另一个字符串
2、判定目标字符串是否位于原字符串的开始之处
3、判定目标字符串是否位于原字符串的结束之处
4、将一个字符串重复自身N次
5、取得一个字符串所有字节的长度
6、使用正则,并支持指定汉字的储层字节数。比如mysql储层汉字时,是用3个字节数的
7、用于对字符串进行截断处理,当超过限定长度,默认添加三个点号或其他什么的。
8、转换为驼峰风格
9、转换为下划线风格
10、转换为连字符风格,亦即CSS变量的风格
11、首字母大写
12、移除字符串中的html标签
13、移除字符串中所有的 script 标签
14、将字符串经过 html 转义得到合适在页面中显示的内容,如将<替换成<
15、将字符串中的 html 实体字符还原为对应的字符
16、将字符串安全格式化为正则表达式的源码
17、可以为字符串的某一段添加字符串。常见的用法如日历在月份前补零
18、模版
19、在字符串两端添加双引号,然后内部需要转义的地方都要转义,用于接装JSON的键名或模析系统中
20、去除字符串两端的空白
1、判定一个字符串是否包含另一个字符串
2、判定目标字符串是否位于原字符串的开始之处
3、判定目标字符串是否位于原字符串的结束之处
4、将一个字符串重复自身N次
5、取得一个字符串所有字节的长度
6、使用正则,并支持指定汉字的储层字节数。比如mysql储层汉字时,是用3个字节数的
7、用于对字符串进行截断处理,当超过限定长度,默认添加三个点号或其他什么的。
8、转换为驼峰风格
9、转换为下划线风格
10、转换为连字符风格,亦即CSS变量的风格
11、首字母大写
12、移除字符串中的html标签
13、移除字符串中所有的 script 标签
14、将字符串经过 html 转义得到合适在页面中显示的内容,如将<替换成<
15、将字符串中的 html 实体字符还原为对应的字符
16、将字符串安全格式化为正则表达式的源码
17、可以为字符串的某一段添加字符串。常见的用法如日历在月份前补零
18、模版
19、在字符串两端添加双引号,然后内部需要转义的地方都要转义,用于接装JSON的键名或模析系统中
20、去除字符串两端的空白
//判定一个字符串是否包含另一个字符串 function contains(target, it){ return target.indexOf(it) != -1; //indexof改成search, lastIndexof } function contains(target, str, separator){ return separator ? (separator + target + separator).indexof(separator + str + separator) > -1 : target.indexOf(str) > -1; }; //判定目标字符串是否位于原字符串的开始之处 //最后参数忽略大小写 function startWith(target, str, ignorcecase){ var start_str = target.substr(0, str.length); return ignorcecase ? start_str.toLowerCase() === str.toLowerCase() : start_str === str; }; //判定目标字符串是否位于原字符串的结束之处 //最后一参数忽略大小写 function endWith(target, str, ignorecase){ var end_str = target.substring(target.length - str.length); return ignorcecase ? start_str.toLowerCase() === str.toLowerCase() : end_str === str; }; //repeat方法:将一个字符串重复自身N次,repeat("ruby",2) => rubyruby; function repeat(target, n){ return (new Array(n+1)).join(target); }; function repeat(target, n){ return Array.prototype.join.call({ length: n+1 }, target); }; var repeat = (function(){ var join = Array.prototype.join, obj = {}; return function(target,n){ obj.length = n + 1; return join.call(obj, target); }; })(); function repeat(target, n){ var s = target, total = []; while( n>0 ){ if(n%2 == 1) total[total.length] = s; //如果是基数 if(n == 1){ break; s += s; n = n >> 1; //相当于将n除以2取其商,或说开2二次方 } }; return total.join(''); }; function repeat(target,n){ var s = target, c = s.length*n; do { s += s; }while( n = n>>1 ); s = s.substring(0,c); return s; }; function repeat(target, n){ var s = target, total = ""; while(n>0){ if(n%2 == 1) total += s; if( n == 1) break; s += s; n = n >> 1; }; return total; }; function repeat(target, n){ if(n == 1){ return target; } var s = repeat(target, Math.floor(n/2)); s += s; if(n%2) s+= target; return s; } function repeat(target,n){ return(n<=0) ? "" : target.concat(repeat(target,--n)); } //取得一个字符串所有字节的长度 //英文字符占用一个字节,中文字符占用两个字节 //假设字符串每个字符的 Unicode 编码均小于等于 255,byteLength 为字符串长度;再遍历字符串,遇到 Unicode 编码大于 255 时,为 byteLength 补加1 function byteLen(target){ var byteLength = target.length, i=0; for(; i<target.length; i++){ if(target.charCodeAt(i) > 255){ byteLength++; } }; return byteLength; } //使用正则,并支持指定汉字的储层字节数。比如mysql储层汉字时,是用3个字节数的 function byteLen(target,fix){ fix = fix ? fix : 2; var str = new Array(fix + 1).join("-"); return target.replace(/[^\x00-\xff]/g, str).length; }; //用于对字符串进行截断处理,当超过限定长度,默认添加三个点号或其他什么的。 function truncate(target, length, truncation){ length = length || 30; truncation = truncation === void(0) ? '...' : truncation; return target.length > length ? target.slice(0,length - truncation.length) + truncation : String(target); } //转换为驼峰风格 function camelize(target){ if(target.indexOf('-')<0 && target.indexOf('_')<0){ return target; } return target.replace(/[-_][^-_]/g, function(match){ return match.charAt(1).toUpperCase(); }); } //转换为下划线风格 function underscored(target){ return target.replace(/(a-z\d)(A-Z)/g, '$1_$2').replace(/\-/g, '_').toLowerCase(); } //转换为连字符风格,亦即CSS变量的风格。 function dasherize(target){ return underscored(target).replace(/_/, '-'); } //首字母大写 function capitalize(target){ return target.charAt(0).toUpperCase() + target.substring(1).toLowerCase(); } //stripTags方法:移除字符串中的html标签,但这方法有缺陷,如里面有script标签,会把这些不该显示出来的脚本也显示出来。 function stripTags(target){ return String(target || "").replace(/<[^>]+>/g, ''); } //stripScripts方法:移除字符串中所有的 script 标签。弥补stripTags 方法的缺陷。此方法应在stripTags之前调用。 function stripScripts(target){ return String(target || "").replace(/<script[^>]*>([\S\s]*?)<\/script>/img, ''); } //escapeHTML方法:将字符串经过 html 转义得到合适在页面中显示的内容,如将<替换成<。 function escapeHTML(target){ return target.replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/'/g, "'"); } //unescapeHTML:将字符串中的 html 实体字符还原为对应的字符。 function unescapeHTML(target){ return target.replace(/"/g, '"') .replace(/</g, '<') .replace(/>/g, '>') .replace(/&/g, "&") .replace(/([\d]+);/g, function($0, $1){ return String.fromCharCode(parseInt($1, 10)); }); } //eacapeRegExp:将字符串安全格式化为正则表达式的源码,源代码处[\\]为[\] function escapeRegExp(target){ return target.replace(/([-.*+?^${}()|[\\]\/\\)/g, '\\$1'); } //pad方法:与trim相反,pad可以为字符串的某一段添加字符串。常见的用法如日历在月份前补零,因为也称之为fillZero function pad(target, n){ var zero = new Array(n).join('0'); var str = zero + target; var result = str.substr(-n); return result; } function pad(target, n){ return Array((n+1) - target.toString().split('').length).join('0') + target; } function pad(taret, n){ return (Math.pow(10,n) + "" + target).slice(-n); } function pad(target, n){ return ((1 << n).toString(2) + target).slice(-n); } function pad(target, n){ return (0..toFixed(n) + target).slice(-n); } function pad(target, n){ return (1e20 + "" + target).slice(-n); } function pad(target, n){ var len = target.toString().length; while(len<n){ target = "0" + target; len++; }; return target; } //filling填充内容,right从首/尾填充,radix进制 //A.toString(radix):A在字符串下radix都是一样的。当A为数字类型的变量,根据radix进制转为不同的字符串。需要注意,不可以直接 数字.toSting() //var A = 10, A.toString() √; 10.toString() ×; function pad(target, n, filling ,right, radix){ var num = target.toString(radix || 10); filling = filling || "0"; while( num.length < n ){ if(!right){ num = filling + num; }else{ num += filling; } } return num; } //模版 //var a = format("Result is #{0},#{1}", 22, 33); // Result is 22,33 //var b = format("#{name} is a #{sex}", {name: "Jhon", sex: "man"}); //Jhon is a man function format(str, object){ var array = Array.prototype.slice.call(arguments, 1); return str.replace(/\\?\#{([^{}]+)}/gm, function(match, name){ if(match.charAt(0) == '\\') return match.slice(1); var index = Number(name); if(index >= 0) return array[index]; if( object && object[name] !== void 0) return object[name]; return ''; }) }; //quote方法:在字符串两端添加双引号,然后内部需要转义的地方都要转义,用于接装JSON的键名或模析系统中 var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g, meta = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }; function quote(target){ if(target.match(escapeable)){ return '"' + target.replace(escapeable, function(a){ var c = meta[a]; if(typeof c === 'string'){ return c; }; return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4) }) + '"'; } return '"' + target + '"'; } //trim:去除字符串两端的空白 function trim(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/,''); } function trim(str){ return str.replace(/^\s+/, '').replace(/\s+$/, ''); } function trim(str){ return str.substring(Math.max(str.search(/\S/), 0), str.search(/\S\s*&/) + 1); } function trim(str){ return str.replace(/^\s+|\s+$/g, ''); } function trim(str){ str = str.match(/\S+(?:\s+\S+)*/); return str ? str[0] : ''; } function trim(str){ return str.replace(/^\s*(\S*(\s+\S+)*)\s*&/, '$1'); } //同上接近,但用了非捕获分组进行了优点,性能有点点提升 function trim(str){ return str.replace(/^\s*(\S*(?:\s+\S+)*)\s*&/, '$1'); } function trim(str) { return str.replace(/^\s*((?:[\S\s]*\S)?)\s*&/, '$1'); } function trim(str) { return str.replace(/^\s*([\S\s]*?)\s*&/, '$1'); } function trim(str){ str = str.replace(/^\s+/, ''); for(var i=str.length-1; i>=0; i--){ if(/\S/.test(str.charAt(i))){ str = str.substring(0,i+1); } }; return str; }
相关文章推荐
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- 5个常见可用性错误和解决方案
- js数组实现图片轮播
- js可突破windows弹退效果代码
- JSP脚本漏洞面面观
- 使用BAT一句话命令实现快速合并JS、CSS
- js显示当前星期的起止日期的脚本
- 爆炸式的JS圆形浮动菜单特效代码
- js select常用操作控制代码
- JS实现不使用图片仿Windows右键菜单效果代码
- 从jsp发送动态图像
- 原生js结合html5制作小飞龙的简易跳球
- js 页面模块自由拖动实例
- js实现小鱼吐泡泡在页面游动特效
- js 提交和设置表单的值
- PHP VBS JS 函数 对照表
- node.js抓取并分析网页内容有无特殊内容的js文件
- PHP+JS实现大规模数据提交的方法
- 仿51JOB的地区选择效果(可选择多个地区)