我有一个要分割的字符串。
我可以在字符串中设置分隔符,例如:
+++DELIMITER 1+++
text
+++DELIMITER R+++
text 2
+++NAME OF DELIMITER+++
text n
...
在问题后进行编辑:
该字符串不包含换行符, 字符串wourld的示例为:
let string = "+++DELIMITER 1+++ text +++DELIMITER R+++ text 2 +++NAME OF DELIMITER+++ specialchars \"£$%%£$\"<>";
text n";
我想要获得的是一个像这样构造的数组:
resultarray=[
["DELIMITER 1", "text"],
["DELIMITER R", "text 2"],
["NAME OF DELIMITER", "text n"]
...
];
我认为我必须使用String.split方法,但我不知道要使用哪种正则表达式。
答案 0 :(得分:1)
您可以拆分字符串并将单个字符串减少为成对。
var string = '+++DELIMITER 1+++text+++DELIMITER R+++text 2+++NAME OF DELIMITER+++text n',
parts = string
.split(/\+{3}/)
.slice(1)
.reduce((r, s, i) => r.concat([i % 2 ? r.pop().concat(s) : [s]]), []);
console.log(parts);
答案 1 :(得分:-1)
您在这里(逐步操作):
const str = `
+++DELIMITER 1+++
text
+++DELIMITER R+++
text 2
+++NAME OF DELIMITER+++
text n
`
// first replace the +++ with ''
const strr = str.replace(/\+{3}/g, '')
// place them in an array
const strArr = strr.split('\n').filter(r=>r!=='')
//push each next two values in separate array
const finalArr = []
while(strArr.length) finalArr.push(strArr.splice(0,2))
console.log(finalArr)