gpt4 book ai didi

javascript - 走出一个表情

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:57 25 4
gpt4 key购买 nike

假设我有这两个例子

  1. (A = 1)和(B = 2)
  2. (A = 1)(B = 2 ())。

我需要一种方法来获取以下数组:

  1. [(],[A][=][1],[)],[and],[(],[B],[=],[2],[)]
  2. [(],[A][=][1],[)],[(],[B],[=],[2],[(],,[)][) ]

我尝试做的是以下内容

使用以下函数查找分隔符(在本例中,分隔符是空格“”和任何方括号())

 function findExpressionDelimeter (textAreaValue){
var delimiterPositions = [];
var bracesDepth = 0;
var squareBracketsDepth = 0;
var bracketsDepth = 0;

for (var i = 0; i < textAreaValue.length; i++) {
switch (textAreaValue[i]) {
case '(':
bracketsDepth++;
delimiterPositions.push(i);
break;
case ')':
bracketsDepth--;
delimiterPositions.push(i);
break;
case '[':
squareBracketsDepth++;
break;
case ']':
squareBracketsDepth--;
break;
default:
if (squareBracketsDepth == 0 && textAreaValue[i] == ' ') {
delimiterPositions.push(i);
}
}
}
return delimiterPositions;
}

然后我尝试遍历返回的值并使用子字符串提取值。问题是,当我有 ( or ) 时,我需要获取下一个子字符串以及括号。这就是我被困的地方。

    function getTextByDelimeter(delimiterPositions, value) {
var output = [];
var index = 0;
var length = 0;
var string = "";

for (var j = 0; j < delimiterPositions.length; j++) {

if (j == 0) {
index = 0;
} else {
index = delimiterPositions[j - 1] + 1;
}

length = delimiterPositions[j];


string = value.substring(index, length);
output.push(string);
}
string = value.substring(length, value.length);
output.push(string);
return output;
}

如有任何帮助,我们将不胜感激。

最佳答案

您可以只匹配您感兴趣的标记:

var str = "(A = 1) and ( B = 2)";
var arr = str.match(/[()]|[^()\s]+/g);

结果:

["(", "A", "=", "1", ")", "and", "(", "B", "=", "2", ")"]

带有一些注释的正则表达式:

[()]     # match a single character token
| # or
[^()\s]+ # match everything else except spaces

如果您想添加更多单字符标记,例如 =,只需将其添加到两个字符类即可。即:[()=]|[^()=\s]+

关于javascript - 走出一个表情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23778598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com