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方法的资料请关注毛票票其它相关文章!