我是用户界面新手,我对我的角度应用程序有一个要求,我想把我的字符串拆分成数组。例如,如果我的字符串是这样的:
formula = "[ Calculation ]+[ test ]-123/LP[ Test Group MFP ]+[ Metrics1 ]*2444-76"然后,使用regEx对操作符分隔符上的字符串进行拆分的拆分函数工作如下:
this.formula = this.formula.split(/([+*\/-])/);并给出了如下所示的输出,这是正确的:
["[ Calculation ]" , "+" , "[ test ]" , "-" , "123" , "/" , "LP[ Test Group MFP ]" , "+" ,"[ Metrics1 ]" , "*" , "2444" , "-" , "76"]但是它有一个问题,如果我的字符串如下所示(如果操作符在方括号内):
formula = "[ Calculation ]+[ m-4 ]-123然后我现在的拆分函数将给出如下输出,
["[ Calculation ]" , "+" , "[ m" , "-" ,"4 ]" , "-" , "123"]但我的预期产出是:
["[ Calculation ]" , "+" , "[ m-4 ]" , "-" , "123"]如何实现这一点,如何分裂函数的基础上,操作符不在方括号内。
发布于 2020-10-22 02:44:33
您可以通过遍历字符串并为方括号使用标志来解决这个问题。我想总是有一个结束的括号。
a = "[ Calculation ]+[ m-4 ]-123";
let flag = false;
let ret = [];
let str = "";
for (let i = 0, l = a.length; i < l; i++) {
let c = a.charAt(i);
if (c === "[" || c === "]") flag = !flag;
if (!flag && (c === "+" || c === "-" || c === "*" || c === "/")) {
ret.push(str);
ret.push(c);
str = "";
} else {
str += c;
}
}
if(str.length > 0) {
ret.push(str);
}
console.log(ret);
发布于 2020-10-22 02:50:26
您可以尝试这样做(我是用Python编写的,因为我不知道JavaScript,但是regex应该是相同的)
Note --只有在“-”符号有一个字母和一个空格的情况下才能工作(负向后看不允许‘非固定宽度’),因此,第二个方括号有'mm-4‘(例如,它不能工作)。
formula = "[ Calculation ]+[ m-4 ]-123"
re.split('(?<!\[ .)([+*\/-])',formula)输出
['[ Calculation ]', '+', '[ m-4 ]', '-', '123']https://stackoverflow.com/questions/64474389
复制相似问题