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 相关文章推荐
一个不错的应用,用于提交获取文章内容,不推荐用
Mar 03 Javascript
javascript 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
浅析Prototype的模板类 Template
Dec 07 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
JavaScript文档碎片操作实例分析
Dec 12 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
Apr 26 Javascript
ECMAScript6快速入手攻略
Jul 18 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
微信小程序实现带参数的分享功能(两种方法)
May 17 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 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
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
Python 创建TCP服务器的方法
2020/07/28 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
Python实现异步IO的示例
2020/11/05 Python
Django缓存Cache使用详解
2020/11/30 Python
python wsgiref源码解析
2021/02/06 Python
2015年村计划生育工作总结
2015/04/28 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
入党介绍人意见范文
2015/06/01 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
教师读书活动心得体会
2016/01/14 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL