js String.prototype.trim字符去前后空格的扩展
最近学习js的时候发现的这个函数,这样很方便地去除前后空格,用正则实现,简单方便。下面毛票票小编就为大家分享一下几种实现方式。
String.Prototype.trim()
trim()返回一个字符串两端空白字符被删除的新字符串,不影响原字符串。
/*内置对象添加方法:String.prototype.trim(给String添加一个trim方法)
*^这个是以什么什么开头
*$这个是以什么什么结尾
*‘/s是String/d是数字'
*replace(/^\s+/,"")把以字符开头的字符串替换为空字符串,
*replace(/\s+$/,"")把以字符结尾的字符串替换为空字符串,
*/
String.prototype.trim=function(){ returnthis.replace(/^\s+/,"").replace(/\s+$/,""); }
第一种实现方式:理论上算是比较不错的
具体的可以查看这篇文章:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trim
if(!String.prototype.trim){ String.prototype.trim=function(){ returnthis.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,''); }; }
第二种实现方式
从国内网站看到的,测试没问题,推荐使用
String.prototype.trim=function(a){ varb=(this+"").replace(/(^[\t\n\r\f\x0b\xa0]*)|([\t\n\r\f\x0b\xa0]*$)/g,""); a&&(a=(a+"").replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g,"\\$1"),b=b.replace(newRegExp("(^["+a+"]*)|(["+a+"]*$)","g"),"")); returnb };
第三种、范围有点小,推荐学习,不推荐使用
String.prototype.trim=function(){ //用正则表达式将前后空格用空字符串替代。 returnthis.replace(/(^\s*)|(\s*$)/g,""); }
第四种,不用正则实现
varstr="acc"; //使用Stringprototype给用添加自定义方法。 String.prototype.trim=function(){ varstart=0; varend=code.length-1; while(start<=end&&this.charAt(start)==''){ start++; } while(start<=end&&this.charAt(end)==''){ end--; } //使用字符截取指定字符 returnthis.substring(start,end+1); }; //使用原型直接调用 console.log("--"+str.trim()+"--")
推荐使用第一种、第二种方法。
下面是其他网友的补充,大家可以参考一下
今天呢知乎看到一道题说是网易面试题,要求自己写一个trim()方法,
实现varstr="asd";去掉字符串两端的空格。
直接上码
varstr="asd"; functiontrim(st){ //先把字符串分割成数组 vararr=st.split(""); //从前面删除空格 for(leti=0;i=0;i--){ //如果数组元素是空格则删除 if(arr[i-1]===""){ arr.pop(); //如果当前元素的前一项不是空格退出循环 if(arr[i-2]!==""){ break; } } } arr=arr.join(""); /*console.log(arr);*/ returnarr; } vara=trim(str); console.log(a);//asd//
原理注释写的很清楚
不用正则实现的代码
functiontrim(s){ returntrimRight(trimLeft(s)); } //去掉左边的空白 functiontrimLeft(s){ if(s==null){ return""; } varwhitespace=newString("\t\n\r"); varstr=newString(s); if(whitespace.indexOf(str.charAt(0))!=-1){ varj=0,i=str.length; while(j=0&&whitespace.indexOf(str.charAt(i))!=-1){ i--; } str=str.substring(0,i+1); } returnstr; } functiondelrd(str){ varreg=/,$/gi; str=str.replace(reg,""); returnstr; }
以上就是jsString.prototype.trim字符去前后空格的扩展的详细内容,更多关于String对象增加一个trim方法的资料请关注毛票票其它相关文章!