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 相关文章推荐
javascript小数计算出现近似值的解决办法
Feb 06 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
Oct 25 Javascript
JS实现的简单图片切换功能示例【测试可用】
Feb 14 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
Feb 26 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
Sep 15 Javascript
vue中使用vee-validator完成表单校验方案
Nov 01 Javascript
js实现QQ邮箱邮件拖拽删除功能
Aug 27 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
如何在JavaScript中使用localStorage详情
Feb 04 Javascript
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
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php动态函数调用方法
2015/05/21 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python下载指定页面上图片的方法
2016/05/12 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
光声世纪笔试题目
2012/08/25 面试题
考博自荐信
2013/10/25 职场文书
销售员岗位职责
2014/06/09 职场文书
英文自荐信范文
2015/03/25 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers