如何在JavaScript中替换空格和换行并补充闭合分号?
如何在JavaScript中同时替换空格和换行符,同时为代码补充闭合分号?
问题分析
你现有的代码用/[\n ]/g直接移除了所有换行和空格,导致语法必要的空格(比如function与函数名之间、var与变量名之间)也被删掉,同时没有处理语句末尾的分号补充,所以输出不符合预期。要达成目标需要分两步:保留必要空格、给语句自动补充分号。
解决方案代码
function main(){ var a = 'hello' console.log(a) } // 处理代码:保留必要空格、移除换行/多余空格、补充分号 const formattedCode = main.toString() // 将所有连续空白(换行、多空格、制表符)替换为单个空格 .replace(/\s+/g, ' ') // 去掉首尾多余空格 .trim() // 给赋值、函数调用等语句末尾补充分号 .replace(/([^;{}])\s*(?={|$|\))/g, '$1;') // 调整大括号前后的空格格式 .replace(/{\s+/g, '{') .replace(/\s+}/g, '}'); console.log(formattedCode);
代码解释
replace(/\s+/g, ' '):把所有连续的空白字符(包括换行、多个空格)统一替换成单个空格,既清理了换行和冗余空格,又保留了语法需要的分隔空格。.trim():移除字符串首尾的无用空格,避免开头或结尾出现多余空格。replace(/([^;{}])\s*(?={|$|\))/g, '$1;'):正则匹配不是分号、大括号的字符,且该字符后面跟着可选空格,同时后续是大括号、字符串结尾或右括号的位置,在匹配到的字符后添加分号,精准给var a = 'hello'、console.log(a)这类语句补全结尾分号。- 最后两个
replace:调整大括号前后的空格,让function main(){和}的格式完全贴合期望输出。
输出结果
运行后会得到你想要的格式:
function main(){var a='hello';console.log(a);}
内容的提问来源于stack exchange,提问作者perona chan
相关产品推荐
相关产品推荐

