Angular+TypeScript中如何移除字符串的空格、转义\n及换行符?
问题描述
在Angular+TypeScript项目中,从OpenAI获取到一段数据,console.log显示内容如下:
" {\n joy: [\"yellow\", \"orange\", \"pink\"],\n surprise: [\"blue\", \"purple\"],\n fear: [\"black\", \"gray\"]\n};"
需要移除其中的换行符、反斜杠和空格,于是使用JavaScript的replace方法:
replace(/[\n\\ ]/g, '');
该代码在JS控制台、regex101等测试环境中能得到预期结果,但在项目中输出为:
"{njoy:[\"yellow\",\"orange\",\"pink\"],nsurprise:[\"blue\",\"purple\"],nfear:[\"black\",\"gray\"]n};"
空格和反斜杠已被移除,但字符n残留,期望得到的输出是:
"{joy:[\"yellow\",\"orange\",\"pink\"],surprise:[\"blue\",\"purple\"],fear:[\"black\",\"gray\"]};"
测试代码片段:
const input = " {\n joy: [\"yellow\", \"orange\", \"pink\"],\n surprise: [\"blue\", \"purple\"],\n fear: [\"black\", \"gray\"]\n};" const output = input.replace(/[\n\\ ]/g, ''); console.log("Filtered string is", output);
解决方案
问题出在项目实际获取的字符串中,\n并非换行符,而是以\和n两个独立字符的形式存在。原正则仅匹配了反斜杠\,留下了n,导致输出异常。
调整正则表达式,同时匹配\n字符组合、空格和单独的反斜杠,替换代码如下:
const output = input.replace(/\\n|\s|\\/g, '');
或者更简洁的写法:
const output = input.replace(/\\n?|\s/g, '');
这个正则会匹配:
\\n:字符串中的\n组合字符\\:单独的反斜杠(n?表示n可选)\s:所有空白字符(包括空格、换行符等)
替换后即可得到预期的目标字符串。
内容的提问来源于stack exchange,提问作者fadingbeat
相关产品推荐
相关产品推荐

