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 に答える