您好我正在尝试使用正则表达式从函数中删除param类型。我有这个字符串
let str = 'function(param: Int, Window: String, param1: String, Window: String)';
console.log(str.replace(/(, )?Window: String/g, ''));
它删除并返回function(param: Int, param1: String)
,它正常工作,但我不想在正则表达式中硬编码Window: String
。它可能是任何东西。
有谁知道怎么做?
答案 0 :(得分:2)
你可以通过交替进行,如下所示:
export {default} from './Component'
这将尝试在参数首先处理逗号,如果不匹配,它会尝试在参数之前没有逗号但在之后使用可选逗号进行匹配。
/,\s*Window:\s*\w+|\s*Window:\s*\w+\s*,\s*?/g
答案 1 :(得分:0)
没有reg表达式首先尝试:
let paramToDel = 'Window';
let str = 'function(param: Int, Window: String, param1: String, Window: String)';
function delParam(str, param)
{
str = str.trim();
params = str.substring(str.indexOf('(')+1, str.indexOf(')'));
params = params.replace(/([a-z0-9]+)/ig, '"$1"');
let res = JSON.parse('{'+params+'}');
delete res[param];
res = JSON.stringify(res);
return 'function('+res.substring(1, res.length-1).replace(/"/g, '')+')';
}
console.log('Input', '`' + str + '`')
console.log('Output', '`' + delParam(str, paramToDel) + '`');

.as-console-wrapper { max-height: 100% !important; top: 0; }