Javascript Split Array

Pet*_*son 3 javascript arrays split

我正在尝试编写一个自定义字符串拆分函数,它比我预期的更难.

基本上,我传入一个字符串和一个字符串将拆分的值数组,它将返回一个子字符串数组,删除空字符串并包括它分割的值.如果字符串可以通过两个不同的值在同一位置拆分,则较长的字符串优先.

那是,

split("Go ye away, I want some peace && quiet. & Thanks.", ["Go ", ",", "&&", "&", "."]);
Run Code Online (Sandbox Code Playgroud)

应该回来

["Go ", "ye away", ",", " I want some peace ", "&&", " quiet", ".", " ", "&", " Thanks", "."]
Run Code Online (Sandbox Code Playgroud)

你能想到一个相当简单的算法吗?如果有一种内置的方式在Javascript(我不认为有)这样做,它会更好.

Lig*_*ica 5

这样的东西?

function mySplit(input, delimiters) {

    // Sort delimiters array by length to avoid ambiguity
    delimiters.sort(function(a, b) {
       if (a.length > b.length) { return -1; }
       return 0;
    }

    var result = [];

    // Examine input one character at a time
    for (var i = 0; i < input.length; i++) {
        for (var j = 0; j < delimiters.length; j++) {
            if (input.substr(i, delimiters[j].length) == delimiters[j]) {

                // Add first chunk of input to result
                if (i > 0) {
                    result.push(input.substr(0, i));
                }
                result.push(delimiters[j]);

                // Reset input and iteration
                input = input.substr(i + delimiters[j].length);
                i = 0;
                j = 0;
            }
        }
    }

    return result;
}

var input      = "Go ye away, I want some peace && quiet. & Thanks.";
var delimiters = ["Go ", ",", "&&", "&", "."];

console.log(mySplit(input, delimiters));
// Output: ["Go ", "ye away", ",", " I want some peace ",
//          "&&", " quiet", ".", " ", "&", " Thanks", "."]
Run Code Online (Sandbox Code Playgroud)