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方法 但是可以通过以下方法实现: /** * 空格替换为下划 ...
随机推荐
- springBoot框架的一些概念
Spring的发展史1. Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml ...
- DWZ(一):框架初了解
DWZ富client框架(jQuery RIAframework),是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. DWZ富client框架设计目标是简单有用.扩展方便.高速开发. ...
- C++之string学习
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <list> #include <string& ...
- GyoiThon:基于机器学习的渗透测试工具
简介 GyoiThon是一款基于机器学习的渗透测试工具. GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等).之后,GyoiThon为已识别的软件执行有效的 ...
- nagios系列教程地址
http://www.sosidc.com/sort/10/page/3 http://www.sosidc.com/sort/10/page/2 http://www.sosidc.com/sort ...
- D3.js系列——动态效果和Update、Enter、Exit的理解
一.动态效果 D3 支持制作动态的图表.有时候,图表的变化需要缓慢的发生,以便于让用户看清楚变化的过程,也能给用户不小的友好感. 1.什么是动态效果 前面制作的图表是一蹴而就地出现,然后绘制完成后不再 ...
- uva 10934 装满水的气球
题意和思路见: http://blog.csdn.net/shuangde800/article/details/11273123 我的想法: 首先问题转化一下 将问题转化成:定义f[i][j] 表示 ...
- Quartz定时框架入门
Quartz框架是Java开源的定时任务调度器,Quartz框架中有如下核心概念: 1. Job 任务接口,接口中只声明方法void execute(JobExecutionContext conte ...
- Memory Barriers
这回该进入主题了. 上一文最后提到了 Memory Barriers ,即内存屏障.由于对一个 CPU 而言,a = 1; b = 1. 由于在中间加了内存屏障,在 X86 架构下,就 ...
- 网站定时任务IIS配置
网站中的定时任务一般是必不可少的,具体的实现方法此文不做详细说明,如有需要了解的请留言.本文主要讲述定时任务有关IIS中的设置. 如果一个网站在20分钟内(IIS默认为20分钟)没有客户端访问,服务器 ...