57 votes

Javascript/jQuery : Diviser une chaîne de caractères en minuscules et ajouter un trait d'union plutôt qu'un espace

J'imagine qu'il s'agit d'une situation à parties multiples avec regex, mais comment diviser une chaîne de caractères en majuscules en les transformant en minuscules, puis en ajoutant un trait d'union entre chaque nouvelle chaîne ?

Par exemple :

thisString

deviendrait :

cette-chaîne

124voto

Wouter J Points 16327

Essayez quelque chose comme :

var myStr = 'thisString';

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

19voto

Syon Points 2955

Réponse tardive, mais cette solution fonctionnera pour les cas où une seule lettre est casquée.

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

5voto

alexfreiria Points 21515

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 chaîne de caractères replace fonction :

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

1voto

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

1voto

Joel Harkes Points 6040

Je ne sais pas pourquoi toutes ces solutions sont si complexes mais j'ai simplement trouvé que cela suffisait :

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());
}    

L'option 1 est généralement plus rapide : https://jsfiddle.net/4557z/17/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X