6

このような文字列を分割するにはどうすればよいですか

"please     help me "

次のような配列を取得します。

["please     ","help ","me "]

つまり、スペース (またはスペース) を保持する配列を取得します。

ありがとう

4

2 に答える 2

12

何かのようなもの :

var str   = "please     help me ";
var split = str.split(/(\S+\s+)/).filter(function(n) {return n});

フィドル

于 2013-07-18T15:02:58.147 に答える
0

これは、関数を使用しないと難しいです。

var temp = "", outputArray = [], text = "please     help me ".split("");
for(i=0; i < text.length; i++) {
    console.log(typeof text[i+1])
    if(text[i] === " " && (text[i+1] !== " " || typeof text[i+1] === "undefined")) {
        outputArray.push(temp+=text[i]);
        temp="";
    } else {
        temp+=text[i];
    }

}
console.log(outputArray);

単純な正規表現がこれを助けることができるとは思わない。プロトタイプを使用して、ネイティブ コードのように使用できます...

String.prototype.splitPreserve = function(seperator) {
    var temp = "", 
        outputArray = [], 
        text = this.split("");
    for(i=0; i < text.length; i++) {
        console.log(typeof text[i+1])
        if(text[i] === seperator && (text[i+1] !== seperator || typeof text[i+1] === "undefined")) {
            outputArray.push(temp+=text[i]);
            temp="";
        } else {
            temp+=text[i];
        }

    }
    return outputArray;
}

console.log("please     help me ".splitPreserve(" "));
于 2013-07-18T15:28:56.490 に答える