下面有一些关于字符串比较常用的一些方法,比如去首尾空格,补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-z\d])([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[^>]*>([\S\s]*?)<\/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(/^\s\s*/, '').replace(/\s\s*$/, '');
}
//版本2
function trim(str){
return str.replace(/^\s+/, '').replace(/\s+$/, '');
}
console.log(trim(" hello kugou ")+"222");