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

时间:2012-01-21 13:12:06

标签: javascript

我有字符串

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

和分隔符数组

var s = '@$>';

我想要一个返回的函数:

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

你能帮助我吗?

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式:

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

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

答案 1 :(得分:1)

这是你的代码:

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/