JavaScript如何移除字符串中的方括号 现有正则替换方案失效求助
问题原因
你当前的正则无法生效的核心问题如下:
- 匹配规则
/(\[|\]),/要求方括号后紧跟逗号才会触发替换,但你字符串首尾的方括号前后都没有逗号,完全无法命中匹配规则 - 未添加全局匹配修饰符
g,即使有符合条件的内容也只会替换第一个 - 你用空格作为替换值,最终会得到多余的空格字符,不符合预期
可行解决方案
以下3种方案都可以得到你需要的EU Ecolabel (EU Flower)||Cradle to Cradle (C2C) - Gold格式结果:
方案1:分步替换首尾方括号
function main(args, values) { var str = inriverctx.GetExtraRelatedEntityFieldDisplayValue("Certification","CertificationName","","CertificationItems","0"); var str2 = str.replace(/,/g, "||" ); // 分别移除开头的[和结尾的] return str2.replace(/^\[/, '').replace(/\]$/, ''); }
方案2:单条正则匹配首尾方括号
function main(args, values) { var str = inriverctx.GetExtraRelatedEntityFieldDisplayValue("Certification","CertificationName","","CertificationItems","0"); var str2 = str.replace(/,/g, "||" ); // ^定位字符串开头,$定位字符串结尾,g全局修饰符同时匹配两个位置的方括号 return str2.replace(/(^\[|\]$)/g, ''); }
方案3:先截取首尾再替换逗号(性能更高)
如果确认接口返回的字符串固定为[内容]的格式,直接用slice截取掉首尾第一个字符即可,不需要写正则匹配方括号:
function main(args, values) { var str = inriverctx.GetExtraRelatedEntityFieldDisplayValue("Certification","CertificationName","","CertificationItems","0"); // slice(1, -1)表示从索引1取到倒数第一个索引之前的内容,刚好去掉首尾的[] return str.slice(1, -1).replace(/,/g, "||"); }
内容的提问来源于stack exchange,提问作者BB HJ
相关产品推荐
相关产品推荐

