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

JavaScript0121

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

在JS中,我们经常需要处理字符串,也经常需要去除字符串的空格。

缺陷:通过字符串自带方法,无法去除字符串中间的空格

2.通过RegExp

使用$.trim()也只能出去两端空格

知识点回顾:

String相关

原始值字符串并没有属性和方法,因为他们不是对象。但原始值可以使用 属性和方法,是因为 JavaScript 在执行其方法和属性时经过了包装类

取出两个undefined是因为在ff中,会将元素内的换行当成一个空的文本节点来处理。

有两种办法可以忽略掉空的文本节点:

第一种,根据nodeType过滤掉空文本节点:

function getFirstChild(parent) {

    if(parent && parent.nodeType == '1') {

        var node = parent.firstChild

        while(node.nodeType != 1) {

            node = node.nextSibling

        }

        

        return node

    }

}

第二种办法,用children[0]获取第一个节点,比如:

<div id="c">

    <span>first span</span>

</div>

document.getElementById('c').children[0]取到的就是第一个span。

另外,children在IE中会将注释当作节点包含在内,需要注意一下,比如下面这种结构:

<div id="c">

<!-- this is comment -->

<span>Span<span>

</div>

在IE中使用document.getElementById('c').children[0],获取到的是<!-- this is comment -->,而不是<span>Span</span>。

nodeType返回值代表的含义:

返回值    节点类型

1             Element                        元素节点

2             Attr                               属性节点

3             Text                              文本节点

4             CDATASection             <![CDATA[]]>

5             EntityReference           文档中的实体引用部分

6             Entity                           文档中的实体

7             ProcessingInstruction  处理指令

8             Comment                     注释

9             Document                    整个文档(文档根节点)

10           DocumentType            向为文档定义的实体提供接口

11           DocumentFragment    轻量级的 Document 对象,能够容纳文档的某个部分

12           Notation                       代表 DTD 中声明的符号

各类节点的子节点:

节点类型    子节点类型

1                1、3、4、5、7、8

2                3、5

3                无子节点

4                无子节点

5                1、3、4、5、7、8

6                1、3、4、5、7、8

7                无子节点

8                无子节点

9                1、7、8、10

10              无子节点

11              1、3、4、5、7、8

12              无子节点