下面有一些关于字符串比较常用的一些方法,比如去首尾空格,补0函数,转译html字符,首字符大小,转换连字符风格,转驼峰,获取字符串字节长度...以后有好用的函数继续做补充。在这里做个记录
/* *contains方法,判断一个字符串是否包含另一个字符串 */ function contains(target, it){ return target.indexOf(it) != -1; } //console.log(contains('class content_box on','content_box')); //mootools可以准确的判断一个元素是否包含特定的className function contains(target, str, separator){ return separator ? (separator + target + separator).indexOf(separator + str + separator) >-1 : target.indexOf(str) >-1; } //console.log(contains('class content_box on','content_box',' ')); /* *startsWith方法:判断目标字符串是否位于原字符串的开始之处 */ function startsWith(target, str, ignorecase){ var start_str = target.substr(0, str.length); return ignorecase ? start_str.toLowerCase() === str.toLowerCase() : start_str === str; } //console.log(startsWith("hello",'He',true)); //第三个参数为是否忽略大小写 /* *endsWith方法:判断目标字符串是否位于字符串末尾 */ function endsWith(target, str, ignorecase){ var end_str = target.substring(target.length - str.length); return ignorecase ? end_str.toLowerCase() === str.toLowerCase() : end_str === str; } //console.log(endsWith("hello kugou","tou",true)); /* repeat方法:将一个字符串重复自身N次 */ //版本1 function repeat(target, n){ return (new Array(n + 1)).join(target); } //版本2 function repeat(target, n){ alert(0) return Array.prototype.join.call({ length : n+1 },target) } //版本3 var repeat = (function(){ var join = Array.prototype.join, obj = {}; return function(target, n){ obj.length = n + 1; return join.call(obj,target); } }) console.log(repeat()("hel8lo2 ",5)) /* byteLen方法:取得一个字符串的字节长度 */ //版本1 假设字符串每个字符的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; } console.log(byteLen("ab中国c")); /* truncate方法:对字符串进行截断,超过限定长度默认添加省略号 */ 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); } console.log(truncate("abcdeffjksjlfksadlfssddlkjl99999")); /* camelize方法:转换为驼峰 */ function camelize(target){ if(target.indexOf('-') < 0 && target.indexOf('_') < 0){ return target; } return target.replace(/[-_][^-_]/g, function(match){ return match.charAt(1).toUpperCase(); }); } console.log(camelize("content-b_ox")); /* underscored方法;转换为下划线 */ function underscored(target){ return target.replace(/([a-zd])([A-Z])/g, '$1_$2').replace(/-/g, '_').toLowerCase(); } console.log(underscored("helloKugou-12")); /* dasherize方法:转换为连字符风格(中横线) */ function dasherize(target){ return underscored(target).replace(/_/g,'-'); } console.log(dasherize("helloKugou_12")); /* capitalize方法:首字母大写 */ function capitalize(target){ return target.charAt(0).toUpperCase() + target.substring(1).toLowerCase(); } console.log(capitalize("hEllo kugou")); /* stripTags方法:移除字符串中的html标签 */ function stripTags(target){ return String(target || "").replace(/<[^>]+>/g, ''); } console.log(stripTags("abcd <h1>Hello kuogu</h1><script>alert(123)</script>")); /* stripScripts方法:移除字符串中所有的script标签,跟stripTags方法同时用 */ function scripScripts(target){ return String(target || "").replace(/<script[^>]*>([Ss]*?)</script>/img, '') } console.log(scripScripts("<script>alert(222)</script>123<h2>ccc</h2>")); /* escapeHTML方法:转译html字符,如 < 替换为 < */ function escapeHTML(target){ return target.replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/'/g, '''); } console.log(escapeHTML("'hello kuou'<dkkksf")); /* 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)); }); } console.log(unescapeHTML("< kkkkk '")); /* pad方法:为字符串的某一端添加字符串,如补零 */ //版本1 function pad(target, n, s){ //target 原字符串,n添加后字符串的长度, s补的字符串是什么 var zero = new Array(n).join(s); str = zero + target; var result = str.substr(-n); return result; } //版本2,版本1的变种 function pad(target, n, s){ return Array((n + 1) - target.toString().split('').length).join(s) + target; } console.log(pad("d98",5,'0')); /* trim方法:去掉字符串两端的空格 */ //版本1 function trim(str){ return str.replace(/^ss*/, '').replace(/ss*$/, ''); } //版本2 function trim(str){ return str.replace(/^s+/, '').replace(/s+$/, ''); } console.log(trim(" hello kugou ")+"222");