如何将多步正则替换简化为单个实现字符串首大写字母拆分?
更简洁的大写字母组拆分实现方案
你需要在大写字母组的首个大写字母前插入空格拆分字符串,比如将FooBARBaz转为Foo BAR Baz。你的现有方案通过三次replace加trim实现,可简化为单次正则替换:
str.replace(/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/g, ' ')
正则逻辑说明
这个正则通过两个正向断言组合,精准匹配需要插入空格的位置:
(?<=[a-z])(?=[A-Z]):匹配小写字母紧跟大写字母的位置,比如Foo末尾的o和BAR开头的B之间,在此处插入空格。(?<=[A-Z])(?=[A-Z][a-z]):匹配**大写字母紧跟“大写字母+小写字母”**的位置,比如BAR末尾的R和Baz开头的B之间,在此处插入空格。
该方案无需处理多余空格或首尾修剪,一次替换即可得到目标结果,比原方案更简洁高效。
内容的提问来源于stack exchange,提问作者Simon Brahan
相关产品推荐
相关产品推荐

