将带有方括号的字符串转换为方括号内容合并的列表
Transform string with square brackets into list in where square bracket content is combined
我想转换以下字符串:
[test1 test2] test3 [test4 test5] test6 test7 [test8]
进入以下数组:
test1 test2, test3, test4 test5, test6, test7, test8
我已经尝试了从 $.grep 到 regEx 的所有准备工作。但它只是没有削减它。我最接近的是:
var block_parts = text.match(/[^[\]]+(?=])/g);
var rest = text.replace(/ *\[[^\]]*]/g, '').split(" ");
var complete = $.merge(rest, block_parts);
但是顺序不一样。 (休息后会附上block_parts)
有人知道我该怎么做吗?
使用双重替换功能。\] +| +\[
将匹配所有 ]
加上以下一个或多个 space 以及结束 [
和前面的 space秒。只需将那些匹配的字符替换为 ,<space>
,然后再次将 [
、]
替换为空字符串。
> var s = "[test1 test2] test3 [test4 test5] test6 test7 [test8]"
undefined
> var m = s.replace(/\] +| +\[/g, ", ").replace(/[\[\]]/g,'')
undefined
> console.log(m)
test1 test2, test3, test4 test5, test6 test7, test8
更新:
> var m = s.replace(/\] +| +\[|\s+(?!\w+\])/g, ", ").replace(/[\[\]]/g,'')
undefined
> console.log(m)
test1 test2, test3, test4 test5, test6, test7, test8
我想转换以下字符串:
[test1 test2] test3 [test4 test5] test6 test7 [test8]
进入以下数组:
test1 test2, test3, test4 test5, test6, test7, test8
我已经尝试了从 $.grep 到 regEx 的所有准备工作。但它只是没有削减它。我最接近的是:
var block_parts = text.match(/[^[\]]+(?=])/g);
var rest = text.replace(/ *\[[^\]]*]/g, '').split(" ");
var complete = $.merge(rest, block_parts);
但是顺序不一样。 (休息后会附上block_parts)
有人知道我该怎么做吗?
使用双重替换功能。\] +| +\[
将匹配所有 ]
加上以下一个或多个 space 以及结束 [
和前面的 space秒。只需将那些匹配的字符替换为 ,<space>
,然后再次将 [
、]
替换为空字符串。
> var s = "[test1 test2] test3 [test4 test5] test6 test7 [test8]"
undefined
> var m = s.replace(/\] +| +\[/g, ", ").replace(/[\[\]]/g,'')
undefined
> console.log(m)
test1 test2, test3, test4 test5, test6 test7, test8
更新:
> var m = s.replace(/\] +| +\[|\s+(?!\w+\])/g, ", ").replace(/[\[\]]/g,'')
undefined
> console.log(m)
test1 test2, test3, test4 test5, test6, test7, test8