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 String 对象
Apr 25 Javascript
ie支持function.bind()方法实现代码
Dec 27 Javascript
js中indexof的用法详细解析
Dec 24 Javascript
jQuery - css() 方法示例详解
Jan 16 Javascript
jquery基础教程之数组使用详解
Mar 10 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
jQuery获取浏览器类型和版本号的方法
Jul 05 Javascript
对Vue table 动态表格td可编辑的方法详解
Aug 28 Javascript
js定义类的方法示例【ES5与ES6】
Jul 30 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
Javascript查看大图功能代码实现
May 07 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递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
PHP中设置时区方法小结
2012/06/03 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
PHP7新特性简述
2017/06/11 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
Python中字典的基本知识初步介绍
2015/05/21 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
Python Flask-web表单使用详解
2017/11/18 Python
python对视频画框标记后保存的方法
2018/12/07 Python
python打开windows应用程序的实例
2019/06/28 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
python求前n个阶乘的和实例
2020/04/02 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
促销活动总结报告
2014/04/26 职场文书
导师评语大全
2014/04/26 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
python实现简单的三子棋游戏
2022/04/28 Python