首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.split(/\s+/)和.split(“")的区别?

.split(/\s+/)和.split(“")的区别?
EN

Stack Overflow用户
提问于 2015-01-24 16:46:13
回答 3查看 14.2K关注 0票数 9

)首先,对不起,我糟糕的英语:p正在查看下一个js代码片段:

代码语言:javascript
复制
var classes = element.className.split(/\s+/);

该代码将将和元素的完整类名拆分为包含每个类的数组.但是,使用.split(/\s+/)和使用.split(" ")有什么区别呢?我看到了同样的结果..。

我用Chrome的下一个简单代码测试了这一点:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>
    <div id="cono" class="clase1 clase2 clase3-xD">
    </div>
    <script>
        var d = document.getElementById("cono");
        console.log(d.className);
        var classes = d.className.split(" ");
        for (i in classes) {
            console.log(classes[i]);
        }
    </script>
</body>
</html>

无论我使用.split(" ")还是.split(/\s+/),我都有相同的结果。

clase1 clase2 clase3-xD clase1 clase2 clase3-xD

他们有什么区别吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-24 17:08:50

.split(“")和.split(/\s+/)之间的区别是:

正则表达式" "

  • 匹配空间字符字面意思。

正则表达式/\s+/

  • 匹配一个单一的白色字符(制表符,行进给,回车,垂直标签,表格提要)之间的时间。(贪婪)

短:

" "将数组拆分为一个空格字符。

/\s/在每种空格字符上拆分数组

一次与非限定时间间的+匹配

票数 20
EN

Stack Overflow用户

发布于 2015-01-24 16:47:38

不,.split(/\s+/).split(" ")是不同的。\s+匹配一个或多个空格字符,其中包括" "匹配单个水平空格字符的换行符。因此,.split(/\s+/)根据一个或多个空格字符拆分输入,.split(" ")根据单个空格拆分输入。

示例:

代码语言:javascript
复制
> "foo   bar".split(/\s+/)
[ 'foo', 'bar' ]
> "foo   bar".split(" ")
[ 'foo', '', '', 'bar' ]
票数 13
EN

Stack Overflow用户

发布于 2015-01-24 16:51:11

\s捕获的空格类型多于空格。

来自Expressions

匹配单个空白字符,包括空格、选项卡、表单提要、行提要。相当于[ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​​\u202f\u205f​\u3000]

另外,+意味着它将在多个空格上匹配。因此,foo bar将产生一个不同的结果:

代码语言:javascript
复制
js> 'foo      bar'.split(' ')
["foo", "", "", "", "", "", "bar"]
js> 'foo      bar'.split(/\s+/)
["foo", "bar"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28127794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档