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 相关文章推荐
JQuery实现自定义对话框的代码
Jun 15 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
Aug 23 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
Feb 20 Javascript
js去除浏览器默认底图的方法
Jun 08 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
Nov 23 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
Javascript继承机制详解
May 30 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
微信小程序实现的picker多级联动功能示例
May 23 Javascript
vue实现前端分页完整代码
Jun 17 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
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
Bootstrap精简教程
2015/11/27 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
python进阶教程之动态类型详解
2014/08/30 Python
django 创建过滤器的实例详解
2017/08/14 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电