繁体   English   中英

正则表达式在冒号之前匹配所有连字符,并用大写字母替换

[英]Regex match all hypens before colon and replace with uppercase

我当前的代码

 var test = { 'font-family-regular': 'Helvetica-Neue', 'font-family-bold': 'Helvetica-Neue-Bold' } var styles = JSON.stringify(test); styles = styles.replace(/(-.)/g, function(x) { return x[2].toUpperCase() }); console.log(styles) 

我要求在冒号之前匹配所有连字符,并将前面的字符修改为大写

例如font-family-regular:“ Helvetica-Neue”

应该变成:fontFamilyRegular:'Helvetica-Neue'

我目前使用的正则表达式将替换所有连字符,包括“ Helvetica-Neue”

text.replace(/(-.)/g, function(x){return x[1].toUpperCase()})

我希望上面的示例看起来像:

var test = {
  fontFamilyRegular: 'Helvetica-Neue',
  fontFamilyBold: 'Helvetica-Neue-Bold'
}

我可能会分别处理属性的两个部分:

 var text = "font-family-regular: 'Helvetica-Neue'"; var keyValue = text.split(':'); var result = keyValue .shift() .replace(/(-.)/g, function(x){ return x[1].toUpperCase() }) + ':' + keyValue.join(' '); alert(result); 

或与您更新的问题:

 var test = { 'font-family-regular': 'Helvetica-Neue', 'font-family-bold': 'Helvetica-Neue-Bold' } var style = {}; for (var key in test) { var newKey = key.replace(/(-.)/g, function(x) { return x[1].toUpperCase(); }); style[newKey] = test[key]; } alert(JSON.stringify(style)); 

您可以循环浏览按键并直接重命名按键。

Object.keys(test).forEach(function(item){ 
        var newItem = item.replace(/\s*-\s*./g, function(x){
               return x[x.length-1].toUpperCase();
        }); 
        test[newItem]=test[item];
        delete test[item];
 })

谢谢,根据给出的答案,我设法解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM