1

是否可以使用正则表达式连接数组元素?如果是这样,我如何达到这些要求?

  • 每个元素都应该用一个空格字符连接,除非它是一个空元素。
  • 空数组元素应与换行符 ( \n) 连接。

这意味着:

["Hello, this is a sentence.", "This is another sentence.", "", "", "Then, there are 2 new lines.","","Then just one new line."]

应该转换.join为:

Hello, this is a sentence. This is another sentence.

Then, there are 2 new lines.
Then just one new line.
4

3 回答 3

1

<br />循环遍历数组,用或\n根据您使用字符串的位置替换空元素,然后将其加入"".

for (var i = 0; i < myArr.length; i++) {
    myArr[i] = myArr[i] === "" ? "\n" : myArr[i];
}
var myStr = myArr.join("");

编辑:这是一个完整的演示,包含您的附加要求:http: //jsfiddle.net/auAAH/

var myArr = ["Hello, this is a sentence.", "This is another sentence.", "", "", "Then, there are 2 new lines.", "", "Then just one new line."];
for (var i = 0; i < myArr.length; i++) {
    if (myArr[i] === "") {
        myArr[i] = "\n";
        if (i !== 0 && myArr[i - 1] !== "\n") {
            myArr[i - 1] = myArr[i - 1].replace(/ $/, "");
        }
    }
    else if (i < myArr.length-1) {
     myArr[i] = myArr[i] + " ";   
    }
}
var myStr = myArr.join("");
document.getElementsByTagName("textarea")[0].value = myStr​;​
于 2012-06-25T17:25:56.303 回答
1
var string = "";

for(var index = 0; index < elements.length; index++) {
    var lastElement = elements[index -1];
    string += elements[index] !== "" ? (lastElement && lastElement !== ""? " " + elements[index] : elements[index]) : "\n";
}
console.log(string);

演示

于 2012-06-25T17:33:29.070 回答
0

您应该首先使用匹配/替换循环根据您的规则修改元素,然后您应该.join使用结果数组。

于 2012-06-25T17:26:37.393 回答