Javascript/jQuery:拆分camelcase字符串并添加连字符而不是空格

Javascript/jQuery: Split camelcase string and add hyphen rather than space

本文关键字:连字符 添加 空格 串并 字符串 jQuery 拆分 字符 camelcase Javascript      更新时间:2023-09-26

我想这是regex的多部分情况,但如何在大写字母处拆分一个camelcase字符串,将其转换为小写字母,然后在每个新字符串之间添加连字符?

例如:

thisString

将变成:

这个字符串

尝试以下操作:

var myStr = 'thisString';
myStr = myStr.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();

回答时间较晚,但此解决方案适用于单个字母大小写为驼色的情况。

'thisIsATest'.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase();  // this-is-a-test

尝试以下操作:

var token = document.getElementsByTagName('strong')[0].innerHTML,
    replaced = token.replace(/[a-z][A-Z]/g, function(str, offset) {
       return str[0] + '-' + str[1].toLowerCase();
    });
alert(replaced);

示例-http://jsfiddle.net/7DV6A/2/

字符串replace函数的文档:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

String.prototype.camelCaseToDashed = function(){
  return this.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
// Usage
"SomeVariable".camelCaseToDashed();

我不知道为什么所有这些解决方案都如此复杂,但我发现这已经足够了:

function camelCaseToDash(input){ 
     // replace Capital letter with the letter + a dash: '-', then lowercase everything.
     return input.replace(/([A-Z])/g, '-$1').toLowerCase(); 
}    
//or, using a callback function, directly lowercasing.
function camelCaseToDashCallback(input){
     //replace capital letter with lowercase variant + a dash '-'.
     return input.replace(/([A-Z])/g, (x)=> "-"+ x.toLowerCase());
}    

但是选项1通常更快:https://jsfiddle.net/4557z/17/