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 验证上传图片大小[客户端]
Aug 01 Javascript
JavaScript调用Activex控件的事件的实现方法
Apr 11 Javascript
Javascript的一种模块模式
Sep 08 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
简单谈谈ES6的六个小特性
Nov 18 Javascript
利用jquery实现实时更新歌词的方法
Jan 06 Javascript
js实现一个简单的MVVM框架示例
Jan 15 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
浅析Angular 实现一个repeat指令的方法
Jul 21 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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
php str_replace的替换漏洞
2008/03/15 PHP
php 常用字符串函数总结
2008/03/15 PHP
php fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
分享3个php获取日历的函数
2015/09/25 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
学习js所必须要知道的一些
2007/03/07 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
python Crypto模块的安装与使用方法
2017/12/21 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
python简单操作excle的方法
2018/09/12 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
邀请函模板
2015/02/02 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
MySQL分区路径子分区再分区
2022/04/13 MySQL