javascript多分隔拆分&将使用过的分隔符返回到数组
javascript split with multi separator & returning used separator to array?
我有字符串
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/
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- javascript多分隔拆分&将使用过的分隔符返回到数组
- 用分隔符分隔字符串,但将分隔符包含在返回数组中
- Regexp:返回不带分隔符的匹配数组