zoukankan      html  css  js  c++  java
  • 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");

  • 相关阅读:
    JSTL标签用法
    (转)javascript正则实战
    Spring中几种数据源的配置
    (转)常用正则表达式
    EL表达式详解
    JAVA环境变量配置(转)
    S2SH整合步骤
    正则表达式30分钟教程(转)
    在Flash Player 10.2中使用原生鼠标指针
    time
  • 原文地址:https://www.cnblogs.com/webtall/p/4561615.html
Copyright © 2011-2022 走看看