1

区切り文字列を使用して文字列を分割する良い方法が見つかりませんが、結果の配列の各要素のプレフィックスとして区切り文字を残します。

から

var s = 'blah0__blah1__blah2';

私は得る必要があります

['blah0', '__blah1', '__blah2']

私が得ることができた最も近いものは

s.split(/(__)/);

返す

['blah0', '__', 'blah1', '__', 'blah2']

しかし、これはアンダースコアをマージするためにトラバースする必要があります。

より良い方法はありますか?

編集:

これまでの私の最善の努力は次のとおりです。

'blah__blah1__blah2'.split(/(__[^_]+)/)
// => ["blah", "__blah1", "", "__blah2", ""]

それでも、出力には空の文字列があります...

4

6 に答える 6

2

これはどう:

var s = 'blah0__blah__blah'
var s_split = s.match(/(__)?(.(?!__))+./g)
console.log(s_split)

通常のsplit.

セパレーターに置き換える__と、ほとんどの場合に問題なく動作するはずです。

于 2013-07-30T13:41:17.787 に答える
1
'blah0__blah1__blah2'.match(/^[^_]+|_+[^_]+/g);
["blah0", "__blah1", "__blah2"]

あなたが望むものをあなたに与えるようです。ただし、入力が表示どおりでない場合は異なる場合があります。

于 2013-07-30T13:46:01.053 に答える
1

2 段階のプロセス。

var s = 'blah0__blah1__blah2';
var blahs = s.split('__');
var scoreBlahs = blahs.map(preScore);
alert(scoreBlahs);
function preScore(b) {
    var x;
    var result = x.concat('__',b);  
    return result; 
}
于 2013-07-30T13:35:25.530 に答える
0

セカンダリ セパレータを挿入し、それを分割して、元のセパレータをそのまま残すことができます。

var s = 'blah0__blah1__blah2';
s = s.replace('_', '_$');
s.split('$');
于 2013-07-30T13:41:07.713 に答える
0

文字列を区切った後、区切り記号を前に追加するだけです

var value = "a,b,c";
var splitter = value.split(",");
for(var i = 0; i < splitter.length; i++) {
    alert("," + splitter[i]);
    }
于 2013-07-30T13:29:57.203 に答える
0

セパレーターはわかっているので、後でもう一度追加してください。

var s = 'blah0__blah1__blah2';
var sep = '__';
var arr = s.split(sep);
for (var i = 1; i < arr.length; i++) {
    arr[i] = sep + arr[i];
}

console.log(arr);
于 2013-07-30T13:31:30.363 に答える