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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
Jan 19 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
JavaScript中对象介绍
Dec 31 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
一次让你了解全部JavaScript的作用域
Jun 24 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 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
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
js实现计算器功能
2020/08/10 Javascript
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
python安装教程
2018/02/28 Python
python format 格式化输出方法
2018/07/16 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
公益广告语集锦
2014/03/13 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
物业保洁员管理制度
2015/08/05 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python
Python实现对齐打印 format函数的用法
2022/04/28 Python