JavaScript中trim 方法实现
Java中的 String 类有个trim() 能够删除字符串前后的空格字符。jQuery中也有trim()方法能够删除字符变量前后的字符串。
可是JavaScript中却没有对应的trim() 方法。幸好,JavaScript中有正則表達式,String 对象有replace() 方法。利用JavaScript的正则和replace方法来达到trim() 方法的效果。
接下来介绍两种方法。事实上两种方法大同小异。
都是在String 对象的prototype属性上进行trim()方法的定义,并提供实现,实现后,便能够通过String对象名.trim()来删除字符串前后的空格字符了。
String.prototype.trim = function() {
// TODO
}
method1 前后空格字符分别替换
JavaScript的String 对象有replace方法。能够对String 对象中的字符进行替换,这里我们利用String 对象的replace方法。对前后的空字符串分别替换。达到总体的删除空字符串的效果。
String.prototype.trim = function(){
return this.replace(/^\s+/, "").replace(/\s+$/, "");
} var sTest1 = " this is a test sentence. ";
alert(sTest1.trim());
解释下trim() 方法的详细方法体
this 在方法内代表的是当前对象
this后面的第一个replace删除的是字符串前面的空格字符
当中
/^\s+/ 表示的是开头的1到多个空格字符,这个正则是Perl风格的
也能够用RegExp对象替换。能够改动为
var regObj = new RegExp("^\\s+");
return this.replace(regObj, "").replace(/\s+$/, "");
这里我们仅仅是将匹配前面空格字符的正則表達式方式改动了
相同也能够替换掉后面的正则方式,最后的代码为
var regObj1 = new RegExp("^\\s+");
var regObj2 = new RegExp("\\s+$");
return this.replace(regObj1, "").replace(regObj2, "");
method2 前后空格总体替换
总体替换方式与前面的分别替换大同小异。前面是两次replace,用两个正则来分别匹配前面和后面的空格字符,总体替换时,用一个正則表達式,来替换掉前面的空格字符。
String.prototype.trim = function(){
return this.replace(/^\s+(.*?)\s+$/, "$1");
} var sTest2 = " this is a new sentence. ";
alert(sTest2.trim());
这里return this.replace(/^\s+(.*?
)\s+$/, "$1");
使用一个正则/^\s+(.*?
)\s+$/匹配了前后的空格字符。后面的$1为正則表達式反向引用的结果
$1 就代表(.*?) 的值,即删除前后空格的要返回的字符串。
这里的正则方式也能够改动为RegExp 的方式。这里我就不改动了。
上面介绍的两种方法。都是通过给String 对象的prototype 属性上定义新的方法来完毕的。
这里也能够不定义新的trim() 方法。直接通过方法体里面的replace主体来达到删除前后字符串的效果。
附上最后的代码
<script>
// method1
String.prototype.trim = function(){
// return this.replace(/^\s+/, "").replace(/\s+$/, ""); // var regObj = new RegExp("^\\s+");
// return this.replace(regObj, "").replace(/\s+$/, ""); var regObj1 = new RegExp("^\\s+");
var regObj2 = new RegExp("\\s+$");
return this.replace(regObj1, "").replace(regObj2, "");
} var sTest1 = " this is a test sentence. ";
alert(sTest1.trim()); // method2
String.prototype.trim = function(){
return this.replace(/^\s+(.*?)\s+$/, "$1");
} var sTest2 = " this is a new sentence. ";
alert(sTest2.trim());
</script>
JavaScript中trim 方法实现的更多相关文章
- JavaScript中reduce()方法
原文 http://aotu.io/notes/2016/04/15/2016-04-14-js-reduce/ JavaScript中reduce()方法不完全指南 reduce() 方法接收 ...
- JavaScript中的方法、方法引用和参数
首先,我们来看一段代码,如果觉得不甚明白的,则本文会对你有益: var player = function (e) { return (function f(m) { ...
- 详解 JavaScript 中 splice() 方法
splice() 方法是一个比较少用的方法,但是功能确实很好,并且在我们 coding 的时候,经常有需要 splice() 方法,先介绍一下该方法. 在 JavaScript 中 splice() ...
- JavaScript中的方法
JavaScript中的方法 在JavaScript中,可以通过对象来调用对应的方法.在JavaScript中,有三个重要的window对象方法:用于显示警告信息的alert.用于显示确认信息的con ...
- JavaScript中Array方法总览
title: JavaScript中Array方法总览 toc: true date: 2018-10-13 12:48:14 push(x) 将x添加到数组最后,可添加多个值,返回数组长度.改变原数 ...
- javascript中concat方法深入理解
最近在恶补js知识的时候,总是会因为js强大的语法而感到震撼.因为以前对前端方面的疏忽,导致了一些理解的错误.因此痛改前非,下定决心,不管做什么事情,都要有专研的精神. 在介绍前,抛出一个问题:如何将 ...
- JavaScript中的方法重载
对js有些了解的人都知道,在js中根本就不存在像C#中的那种方法重载,而有的只是方法的覆盖,当你在js中敲入两个或多个同名的方法的时候,不管方法(函数)的参数个数怎么个不同,这个方法名只能属于最后定义 ...
- 仿javascript中confirm()方法的小插件
10天没有写博客了,不知道为什么,心里感觉挺不舒服的,可能这是自己给自己规定要去完成的事情,没有按照计划执行,总会心里不怎么舒服.最近事情挺多的,终于今天抽空来更新一下博客了. 今天写的是一个小插件. ...
- JavaScript 中 replace方法 替换所有字符串
需要替换一个字符串中所有的某个字符串 java中使用replaceAll()方法就可以了.但是JavaScript中没有replaceAll方法 但是可以通过以下方法实现: /** * 空格替换为下划 ...
随机推荐
- iOS:实现邮件和短信发送的简单示例
发送邮件1.导入库文件:MessageUI.framework2.引入头文件3.实现代理<MFMailComposeViewControllerDelegate> 和 <UINavi ...
- centos selinux学习记录
SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明 ...
- wordcount代码实现详解
阅读目录 1.MapReduce整体流程 2.WordCount源码 3.WordCount逐行解析 Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储, ...
- 解读Spark Streaming RDD的全生命周期
本节主要内容: 一.DStream与RDD关系的彻底的研究 二.StreamingRDD的生成彻底研究 Spark Streaming RDD思考三个关键的问题: RDD本身是基本对象,根据一定时间定 ...
- HA分布式集群配置三 spark集群配置
(一)HA下配置spark 1,spark版本型号:spark-2.1.0-bin-hadoop2.7 2,解压,修改配置环境变量 tar -zxvf spark-2.1.0-bin-hadoop2. ...
- Linux(CentOS)修改IP地址
登陆连接centos系统,输入 ifconfig 可以查看到当前本机的IP地址信息 一 临时修改IP地址: 1.假如查询IP为1.118,输入 ifconfig eth0 (默认是第一个网卡) 后面接 ...
- windowsclient开发--依据可下载url另存为文件(微信windowsclient这样做的)
能够我的blog的标题会让你误解,那么好,没图说了xx: 比方微信windowsclient发送了一张图片,我们能够预览这张图片,还能够保存到本地: 那么windows程序是怎样下载这张图片的呢? 是 ...
- Nehe OpenGL lesson 8
lesson8 Blending: http://nehe.gamedev.net/tutorial/lessons_06__10/17010/ (也许须要特殊手段訪问) There was a re ...
- S7:享元模式 Flyweight
运用共享技术有效的支持大量细粒度的对象. 应用场景: A.减少对相同对象的重复创建 UML: 示例代码:如果在工厂中,有用户,我们就直接调用,没有用户,我们就获取.减少对同一uid的user对象的重复 ...
- Request.Cookies使用方法分析
本文章介绍了Request.Cookies的基本的语法和使用方法. 而且通过演示样例分析了Request.Cookies的使用过程. Request.Cookies方法能够检索Cookies 集合中的 ...