JavaScript正则表达式字符串拆分

时间:2018-08-21 09:11:06

标签: javascript regex string split

我有一个要分割的字符串。

我可以在字符串中设置分隔符,例如:

+++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方法,但我不知道要使用哪种正则表达式。

2 个答案:

答案 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)