gpt4 book ai didi

javascript - 提取部分代码避免其他部分不匹配的大括号

转载 作者:行者123 更新时间:2023-11-29 20:39:26 25 4
gpt4 key购买 nike

我正在尝试编写 JavaScript 编译器,我需要处理大量的编程符号,所以我的程序比其他程序复杂一些。我在字符串形式的变量 a 中有一段不完整的代码,我想提取 @style 的完整属性,避免向后不相关的符号并将其转换为纯对象不完整的对象(它实际上是一个字符串)。如果您不明白,请查看下面的输出示例;

我已经尝试了很多次,但是由于缺乏解决这类问题的概念我无法解决,请帮助我。

      var a = `@style":{".time":{color:"red"}}}`;
var b = `@style":{".time":{color:"red" , height:'10px'}}}}}}))}`;
var b = `@style":{".time":{
color:"red" ,
height:'10px'
},
"@keyframes example" : {
"0%" : {background-color: 'red'},
"25%" : {background-color: 'yellow'}
}
}}}}}))}{`;

扩展输出:

     a =  {".time":{color:"red"}}

b = {".time":{color:"red" , height:'10px'}}

c = {
".time":{
color:"red" ,
height:'10px'
},
"@keyframes example" {
"0%" : {
background-color: "red"
},
"25%" : {
background-color: "yellow"
}
}
}

在示例中,您可以清楚地看到仅采用彼此对应的括号 } 和 {,但避免了没有对应的开始/结束括号的括号。

为了清楚地理解问题:

让我们假设变量 abc 包含完整的对象,我需要从中提取 @style 的完整属性

请帮帮我

最佳答案

对于此类问题,您必须使用实现规则,例如:只要记住“没有尾部就无法实现硬币头,同样,没有女孩就无法实现男孩同样地,当你来到代码世界时比较同样的事情< strong>{ 没有 } 就无法实现 "

规则:将要完成的第一件事(即 { )放在数组中,在其他步骤中,当它的对立伙伴 } 被发现时,它已完成,所以将一些有值(value)的数据放在同一个地方。

如果您不清楚我的规则,请查看 100% 工作代码。

var out =  console.log , 
a = `@style":{".time":{
color:"red" ,
height:'10px'
},
"@keyframes example" : {
"0%" : {background-color: 'red'},
"25%" : {background-color: 'yellow'}
}
}}}}}))}{`,

a = a.substr(a.indexOf(':')+1).replace(/\s/g,''),
state = [],
Endpoint = -1,

found = function(state , index){
for(var i = 0 ; i < state.length ; i++){
if(state[i] == '{'){
state[i] = index;
FirstEntry = true;
break;
}
}
},

check = function(state){
for(var j = 0 ; j < state.length ; j++){
if(typeof state[j] !== 'number'){
return(0);
}
}
return(1);
};

for(var i = 0 ; i < a.length ; i++){
var el = a[i];
if(el == '{'){
state.push(el);
}
if(el == '}'){
found(state , i);
}
if(check(state)){
Endpoint = i;
break;
}
}

out(Endpoint , a.substr(0,Endpoint+1));

关于javascript - 提取部分代码避免其他部分不匹配的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991699/

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