Javascript分割功能在新行或空白处拆分成数组

时间:2014-08-09 12:40:59

标签: javascript regex

我试图通过空格和/或新行拆分一些文本,并在整个文本之前和之后删除空格,以防万一。我不知道如何执行此操作,因为我无法理解正则表达式(我已经尝试了其他人的正则表达式,但它打破了我的输出)并且我想使用最佳实践执行此操作而不是写一些冗长的越野车解决方法

我的代码可以在这里找到:https://github.com/Dave-Melia/Text-Separator

非常感谢

d

4 个答案:

答案 0 :(得分:7)

要拆分任何空格(包括换行符),您将/\s/split一起使用:

var theArray = theString.split(/\s+/);

\s表示“空格”(例如,空格 - 包括换行符),+表示“一个或更多”。

要首先从字符串的开头和结尾修剪空白,在任何现代浏览器上都可以使用String#trim

var theArray = theString.trim().split(/\s+/);

如果您必须支持旧浏览器,则可以使用replace

var theArray = theString.replace(/^\s+|\s+$/g, '').split(/\s+/);

replace一起使用的正则表达式可以使用一些解释:http://regex101.com/r/sS0zV3/1

  • ^\s+表示“字符串开头的任何空格
  • |表示“或”(如“那个”)(称为“替换”)
  • \s+$表示“字符串末尾的任何whitepsace

然后我们将所有出现次数(g)替换为''(空白字符串)。

答案 1 :(得分:3)

您可以拆分正则表达式,因为\s适用于所有包含换行符的空白,所以:

'  bla\nblabla blablabla\n blablablabla'
  .replace(/^\s+|\s+$/g,'')
  .split(/\s+/);
//=> ["bla", "blabla", "blablabla", "blablablabla"]

答案 2 :(得分:1)

简单,split函数采用regexp

var a = "foo bar\nfoo".split(/\s/)    
// this returns ["foo", "bar", "foo"]

如果你有多个空格(注意加号)

var a = "foo    bar  \n  foo".split(/\s+/)    
// this returns ["foo", "bar", "foo"]

在你可以使用trim()之前和之后摆脱whitespases

var a = "   foo    bar  \n  foo   ".trim().split(/\s+/)    
// this returns ["foo", "bar", "foo"]

答案 3 :(得分:1)

要按空格分割,您可以在正则表达式中使用\s 对于换行符,您可以使用\n(和\r

我创建了一个分解并删除空数组项的示例。

注意:在下面的示例中,我添加了空格并打破了空字符。

function splitText(data) {
    return String(data).split(/[\0\s]+/g).filter(Boolean);
}

console.log(splitText(" dat a    a "));

IE8:

function splitText(data) {
    var arr = String(data).split(/[\0\s]+/g), i, j, v = [];

    j = arr.length;

    for (i = 0; i < j; i += 1) {
        if (arr[i] !== "") {
            v.push(arr[i]);
        }
    }

    arr = null;
    return v;
}

alert(splitText(" dat a  a "));