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 操作DOM的基本用法分享
Apr 05 Javascript
浅析jQuery中常用的元素查找方法总结
Jul 04 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
页面实时更新时间的JS实例代码
Dec 18 Javascript
js调试工具Console命令详解
Oct 21 Javascript
jQuery遍历json中多个map的方法
Feb 12 Javascript
jquery实现简单的遮罩层
Jan 08 Javascript
理解javascript对象继承
Apr 17 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
详解angular如何调用HTML字符串的方法
Jun 30 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获取文件名后缀
2013/06/09 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
javascript实现拼图游戏
2021/01/29 Javascript
python 获取et和excel的版本号
2009/04/09 Python
Python 流程控制实例代码
2009/09/25 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
python cs架构实现简单文件传输
2020/03/20 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python requests获取网页常用方法解析
2020/02/20 Python
详解python metaclass(元类)
2020/08/13 Python
Python grpc超时机制代码示例
2020/09/14 Python
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
在什么时候需要使用"常引用"
2015/12/31 面试题
学生请假条
2014/04/11 职场文书
与美同行演讲稿
2014/09/13 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
给老婆的保证书
2015/01/16 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
投诉书格式范本
2015/07/02 职场文书
2015暑假实习报告范文
2015/07/13 职场文书