私がこれを調べていたときに、正規表現の解決策が投稿されました。だから私は先に進んでそれなしで1つ書いた。私はいくつかの簡単なベンチマークを行いましたが、それは-少し-速いです(私はそれが遅くなると思っていました...)。
正規表現を使用せずに、私があなたが望むものを理解した場合、これは仕事をするはずです:
function doSplit(input) {
var output = [];
var currPos = 0,
prevPos = -1;
while ((currPos = input.indexOf('|', currPos + 1)) != -1) {
if (input[currPos-1] == "\\") continue;
var recollect = input.substr(prevPos + 1, currPos - prevPos - 1);
prevPos = currPos;
output.push(recollect);
}
var recollect = input.substr(prevPos + 1);
output.push(recollect);
return output;
}
doSplit('1|2|3\\|4|5'); //returns [ '1', '2', '3\\|4', '5' ]