J'imagine que c'est une situation en plusieurs parties avec l'expression régulière, mais comment diviseriez-vous une chaîne de camelcase au niveau des majuscules en les transformant en lettres minuscules, puis en ajoutant un trait d'union entre chaque nouvelle chaîne?
Par exemple:
thisString
deviendrait:
cette chaîne
Essayez quelque chose comme:
var myStr = 'thisString';
myStr = myStr.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
En retard pour répondre, mais cette solution fonctionnera pour les cas où une seule lettre est encadrée de chameau.
'thisIsATest'.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase(); // this-is-a-test
Essayez ce qui suit:
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);
Exemple - http://jsfiddle.net/7DV6A/2/
Documentation pour la fonction chaîne 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();
Je ne sais pas pourquoi toutes ces solutions sont si complexes mais j'ai simplement trouvé cela suffisant:
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());
}
généralement l'option 1 est plus rapide cependant: https://jsfiddle.net/4557z/17/