在JS中,我们经常需要处理字符串,也经常需要去除字符串的空格。
缺陷:通过字符串自带方法,无法去除字符串中间的空格
2.通过RegExp
使用$.trim()也只能出去两端空格
知识点回顾:
String相关 :
原始值字符串并没有属性和方法,因为他们不是对象。但原始值可以使用 属性和方法,是因为 JavaScript 在执行其方法和属性时经过了包装类
具体的算法为:
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
}
//去掉右边的空白 www.2cto.com 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
}
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
1、String.prototype.trim:支持IE9+,Chrome1+,Firefox3+,Safari4+。该方法就是,去掉字符串前后的空格,若有中间的空格则不影响:
//传入 alert("==string==".trim())//结果 "==string=="
2、String.prototype.replace
支持IE9+,Chrome1+,Firefox3+,Safari4+。该方法可以批量的将字符串的内的特定的字符替换成其他字符,本处我们将空格替换成空字符:
//传入 alert("==string==".replace(/\s/g, ""))//结果 "==string=="
3、正则表达式
支持IE9+,Chrome1+,Firefox3+,Safari4+。我们可以利用正则表达式来提取空格,空格可以利用\s来表示,其中^表示从开始开始匹配,$表示从末尾开始匹配,\s表示空字符,{n}为匹配n次:
//传入 alert("==string==".replace(/^\s{1,}|\s{1,}$/g, ""))//结果 "==string=="