JS中如何去除字符串的空格

JavaScript06

JS中如何去除字符串的空格,第1张

在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网页增加动态功能。

function clear(obj,test){

  var x=obj||document.getElementsByTagName('*'),i=x.length

  while(i--){

    var y=x[i].childNodes,j=y.length

    while(j--){

      if(y[j].nodeType==3){

        if(test==true){

          y[j].nodeValue=y[j].nodeValue.replace(/\s|&nbsp/g,'')

        }else{

          if(!/\S/.test(y[j].nodeValue)){y[j].parentNode.removeChild(y[j])}

        }

      }

    }

  }

}

var obj=document.getElementsByTagName('F1') clear(obj,false)//删除指定文本节点中空白子节点

clear(obj,true) //删除指定文本节点中所有的空格

clear(null,true)//删除所有文本节点中所有的空格