JS字符串方法扩展

下面有一些关于字符串比较常用的一些方法,比如去首尾空格,补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");

原文地址:https://www.cnblogs.com/webtall/p/4561615.html