javascript使用多分隔符拆分&将使用过的分隔符返回数组?

javascript使用多分隔符拆分&将使用过的分隔符返回数组?,javascript,Javascript,我有绳子 var t = '@qf$q>@gf'; 和分离器阵列 var s = '@$>'; 我希望有一个函数返回: var a = f(t,s); // a is array = ["@","qf","$","q",">","@","gf"]; 你能帮我吗?这是你的密码: var t = '@qf$q>@gf'; var s = '@$>'; var finalArray = []; var tmpString = ''; var found = fal

我有绳子

var t = '@qf$q>@gf';
和分离器阵列

var s = '@$>';
我希望有一个函数返回:

var a = f(t,s);
// a is array = ["@","qf","$","q",">","@","gf"];
你能帮我吗?

这是你的密码:

var t = '@qf$q>@gf';
var s = '@$>';

var finalArray = [];
var tmpString = '';
var found = false;
for (var i=0; i<t.length; i++) {
  for (var j=0; j<s.length; j++) {
    if (t[i] == s[j]) {
      found = true;
      if (tmpString != '') {
        finalArray.push(tmpString);
      }
      finalArray.push(t[i]);
      tmpString = '';
    }
  }
  if (!found) {
    tmpString += t[i];
  }
  found = false;
}
if (tmpString != '') {
  finalArray.push(tmpString);
}
以下是相关联的JSFIDLE:

编辑:简化版 更新的JSFIDLE here:

以下是您的代码:

var t = '@qf$q>@gf';
var s = '@$>';

var finalArray = [];
var tmpString = '';
var found = false;
for (var i=0; i<t.length; i++) {
  for (var j=0; j<s.length; j++) {
    if (t[i] == s[j]) {
      found = true;
      if (tmpString != '') {
        finalArray.push(tmpString);
      }
      finalArray.push(t[i]);
      tmpString = '';
    }
  }
  if (!found) {
    tmpString += t[i];
  }
  found = false;
}
if (tmpString != '') {
  finalArray.push(tmpString);
}
以下是相关联的JSFIDLE:

编辑:简化版
更新了JSFIDLE此处:

您可以使用正则表达式:

'@qf$q>@gf'.match(/[@$>]|[^@$>]+/g)

正则表达式/[@$>]|[^@$>]+/g匹配单个分隔符[@$>]或一个或多个非分隔符字符[^@$>]+的任何序列的所有匹配项。

您可以使用正则表达式:

'@qf$q>@gf'.match(/[@$>]|[^@$>]+/g)
正则表达式/[@$>]|[^@$>]+/g匹配单个分隔符[@$>]或一个或多个非分隔符[^@$>]的任何序列的所有匹配项