正则表达式替换返回xxxx;声明

问题描述 投票:-2回答:2

我正在做一些邪恶的事情,要求我替换所有出现的“返回xxx;”用其他东西代码片段。

例如

function(x, y)
{ 
 if(x == 0) return "bye bye";
 else
 return x+y;
}

会成为

function(x,y)
{
 if(x == 0) unholy("bye bye");
 else
 unholy(x+y);
}

寻求帮助因为正则表达式一直在藐视我的理解。

编辑由于“问题与'学习正则表达式'重复'”:

虽然学习新东西总是一个很好的选择,但不一定总是最好的选择。我很想学习缝合伤口,但在流血时最好只是去找医生。当然,如果我一直在自己切割自己,或者我的工作总是让我处于被切割的位置 - 那么我肯定需要学习缝合伤口。此外,有时学习是通过观察某人修理某些东西,并了解他们是如何做到的。

javascript regex
2个回答
2
投票

这样做的几种方法之一:

.replace(/return\s+([^;]*);/g, 'unholy($1);');

正则表达式找到任何返回语句和后续空格,然后捕获任何直到;。用unholy替换完整的匹配,然后用括号内的先前捕获的部分取而代之。

正则表达式之后的g代表全局,并使其重复整个文本的替换。

var code =  'function(x, y)\n'+
            '{\n'+
            '  if(x == 0) return "bye bye";\n'+
            '  else\n'+
            '  return x+y;\n'+
            '}\n';
            
 console.log(code);
 
 code = code.replace(/return\s+([^;]*);/g, 'unholy($1);');
 
 console.log(code);

0
投票

也许我不明白问题,但为什么你需要正则表达式?这样的事你说够了。

function(x, y) {
  function unholy(a, b) {
    if (typeof arguments[1] == 'string') {
      return "bye bye";
    } else return a + b;
  }
  if (x == 0) unholy("bye bye");
  else
    unholy(x + y);
}
© www.soinside.com 2019 - 2024. All rights reserved.