JavaScript如何实现带连字符字符串首字母及连字符后字母大写并去连字符
问题分析
现有代码仅通过正则/(-.)/g匹配连字符后的字符做大写转换,没有处理原字符串的首字母大写逻辑,因此会出现es-US处理后为esUS而非预期EsUS的问题。
解决方案
修改正则匹配规则,同时覆盖首字符和连字符后字符的处理,完整代码如下:
const locales = ['es-US', 'en-US', 'en-CA', 'fr-CA', 'ar', 'fi', 'hy'] for(const st of locales) { const basePkg = `locale${st.replace(/(^.|-.)/g, x => x.slice(-1).toUpperCase())}`; console.log(basePkg); }
逻辑说明
- 正则
/(^.|-.)/g可同时匹配两类内容:字符串开头的第一个字符、连字符紧跟的第一个字符 - 替换逻辑中通过
slice(-1)取匹配结果的最后一位:如果是开头字符直接取本身,如果是连字符加后续字符的组合就取连字符后的字符,统一转大写后自然就移除了连字符,同时满足全部需求
运行后输出结果和你预期的完全一致:['localeEsUS', 'localeEnUS', 'localeEnCA', 'localeFrCA', 'localeAr', 'localeFi', 'localeHy']
内容的提问来源于stack exchange,提问作者Mitul Panchal
相关产品推荐
相关产品推荐

