js String.prototype.trim字符去前后空格的扩展


Posted in Javascript onAugust 23, 2020

最近学习js的时候发现的这个函数,这样很方便地去除前后空格,用正则实现,简单方便。下面三水点靠木小编就为大家分享一下几种实现方式。

String.Prototype.trim()

trim()返回一个字符串两端空白字符被删除的新字符串,不影响原字符串。

/*内置对象添加方法:String.prototype.trim(给String添加一个trim方法)
*^这个是以什么什么开头
*$这个是以什么什么结尾
*‘/s是String /d是数字'
*replace(/^\s+/ , "")把以字符开头的字符串替换为空字符串,
*replace(/\s+$/ , "")把以字符结尾的字符串替换为空字符串,
*/

String.prototype.trim = function(){
return this.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 () {
 return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
 };
}

第二种实现方式

从国内网站看到的,测试没问题,推荐使用

String.prototype.trim = function(a) {
 var b = (this + "").replace(/(^[ \t\n\r\f\x0b\xa0]*)|([ \t\n\r\f\x0b\xa0]*$)/g, "");
 a && (a = (a + "").replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, "\\$1"), b = b.replace(new RegExp("(^[" + a + "]*)|([" + a + "]*$)", "g"), ""));
 return b
};

第三种、范围有点小,推荐学习,不推荐使用

String.prototype.trim = function(){ 
 //用正则表达式将前后空格用空字符串替代。 
 return this.replace(/(^\s*)|(\s*$)/g,""); 
 }

第四种,不用正则实现

var str = " ac c ";
//使用String prototype 给用添加自定义方法。
String.prototype.trim = function(){
 var start = 0;
 var end = code.length-1;
 while(start<=end && this.charAt(start) == ' '){
	start++;
 }
 while(start<=end && this.charAt(end) == ' '){
	end--;
 }
 //使用字符截取指定字符
 return this.substring(start,end+1);
 };
 //使用原型直接调用
 console.log("--"+str.trim()+"--")

推荐使用第一种、第二种方法。

下面是其他网友的补充,大家可以参考一下

今天呢 知乎看到一道题 说是网易面试题,要求自己写一个trim()方法,

实现 var str = " a sd "; 去掉字符串两端的空格。

直接上码

var str = " a sd ";
 
 function trim (st) {
 // 先把字符串分割成数组
 var arr = st.split("");
 // 从前面删除空格
 for (let i = 0; i < arr.length; i++) {
 // 如果数组元素是空格则删除
 if (arr[i] === " ") {
 arr.shift();
 /*console.log(arr.length, i)*/
 // 如果当前元素的下一项不是空格退出循环
 if (arr[i+1] !== " ") {
 break;
 }
 
 }
 }
 // 后前面删除空格
 for (let i = arr.length; i >= 0; i--) {
 // 如果数组元素是空格则删除
 if (arr[i-1] === " ") {
 arr.pop();
 // 如果当前元素的前一项不是空格退出循环
 if (arr[i-2] !== " ") {
 break;
 }
 }
 }
 arr = arr.join("");
 /*console.log(arr);*/
 return arr;
 }
 var a = trim(str);
 console.log(a); //a sd//

原理注释写的很清楚

不用正则实现的代码

function trim(s){ 
return trimRight(trimLeft(s)); 
} 
//去掉左边的空白 
function trimLeft(s){ 
if(s == null) { 
return ""; 
} 
var whitespace = new String(" \t\n\r"); 
var str = new String(s); 
if (whitespace.indexOf(str.charAt(0)) != -1) { 
var j=0, i = str.length; 
while (j < i && whitespace.indexOf(str.charAt(j)) != -1){ 
j++; 
} 
str = str.substring(j, i); 
} 
return str; 
} 
//去掉右边的空白 
function trimRight(s){ 
if(s == null) return ""; 
var whitespace = new String(" \t\n\r"); 
var str = new String(s); 
if (whitespace.indexOf(str.charAt(str.length-1)) != -1){ 
var i = str.length - 1; 
while (i >= 0 && whitespace.indexOf(str.charAt(i)) != -1){ 
i--; 
} 
str = str.substring(0, i+1); 
} 
return str; 
} 
function delrd(str){
var reg=/,$/gi; 
str=str.replace(reg,"");
return str;
}

以上就是js String.prototype.trim字符去前后空格的扩展的详细内容,更多关于String对象增加一个trim方法的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
JS中showModalDialog 的使用解析
Apr 17 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
Nov 21 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
原生JS实现图片左右轮播
Dec 30 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
Jul 19 jQuery
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
Vue-input框checkbox强制刷新问题
Apr 18 Javascript
uni-app之APP和小程序微信授权方法
May 09 Javascript
jquery实现上传图片功能
Jun 29 jQuery
jQuery实现日历效果
Sep 11 jQuery
详解vue身份认证管理和租户管理
May 25 Vue.js
Vue Object 的变化侦测实现代码
Apr 15 #Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
Apr 15 #Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
Apr 15 #Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 #Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
Apr 15 #Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 #Javascript
vue-cli设置publicPath小记
Apr 14 #Javascript
You might like
用PHP实现的随机广告显示代码
2007/06/14 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
js运动事件函数详解
2016/10/21 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Python流程控制 while循环实现解析
2019/09/02 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
考试退步检讨书
2014/01/15 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
早上好问候语大全
2015/11/10 职场文书
信息技术课教学反思
2016/02/23 职场文书
小学语文教学反思范文
2016/03/03 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
这样写python注释让代码更加的优雅
2021/06/02 Python