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

javascript split with multi separator & returning used separator to array?

本文关键字:分隔符 返回 数组 分隔 拆分 amp javascript      更新时间:2023-09-26

我有字符串

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

和分离器阵列

var s = '@$>';

我想要一个返回的函数:

var a = f(t,s);
// a is array = ["@","qf","$","q",">","@","gf"];

你能帮我吗?

您可以使用正则表达式:

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

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

这是您的代码:

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);
}

它将输出:

["@", "qf", "$", "q", ">", "@", "gf"]

以下是相关的jsFiddle:http://jsfiddle.net/Cf8LA/


编辑:简化版本

var t = '@qf$q>@gf';
var s = '@$>';
var finalArray = [];
var tmpString = '';
for (var i=0; i<t.length; i++) {
  if (s.indexOf(t[i]) >= 0) {
    if (tmpString != '') {
      finalArray.push(tmpString);
    }
    finalArray.push(t[i]);
    tmpString = '';
  } else {
    tmpString += t[i];
  }
}
if (tmpString != '') {
  finalArray.push(tmpString);
}

在此处更新jsFiddle:http://jsfiddle.net/Cf8LA/1/