欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS字符串方法扩展

程序员文章站 2023-12-21 18:04:16
...

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

上一篇:

下一篇: