我有字符串
var t = '@qf$q>@gf';
和分隔符数组
var s = '@$>';
我想要一个返回的函数:
var a = f(t,s);
// a is array = ["@","qf","$","q",">","@","gf"];
你能帮助我吗?
答案 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/