48 votes

jQuery Title Case

Existe-t-il un moyen intégré à jQuery pour "mettre en majuscule" une chaîne de caractères ? Ainsi, si l'on donne quelque chose comme "bob smith", cela devient "Bob Smith" ?

4voto

Ramiro Points 41

Est beaucoup plus simple...
Vous devez utiliser un callback dans le remplacement.

toCamelCase = function(str){
  return str.replace(/-\w/g,function(match){return match[1].toUpperCase()})
}
// this works for css properties with "-" 
// -webkit-user-select => WebkitUserSelect

Vous pouvez changer le RegExp en /[-]. \s ] \w /g ou /(^|[- \s ]) \w /g ou autre...

2voto

Joon Points 1132

Je sais que cette question est un peu ancienne mais..,

Voici ma version de la fonction camelCase :

var camelCase = (function () {
    var DEFAULT_REGEX = /[-_]+(.)?/g;

    function toUpper(match, group1) {
        return group1 ? group1.toUpperCase() : '';
    }
    return function (str, delimiters) {
        return str.replace(delimiters ? new RegExp('[' + delimiters + ']+(.)?', 'g') : DEFAULT_REGEX, toUpper);
    };
})();

Il gère tous les cas limites suivants :

  • prend en charge les traits de soulignement et les traits d'union par défaut (configurable avec le deuxième paramètre).
  • chaîne de caractères unicode
  • chaîne de caractères qui se termine par un trait d'union ou un trait de soulignement
  • chaîne de caractères comportant des traits d'union ou des caractères de soulignement consécutifs

Voici un lien vers les tests en direct : http://jsfiddle.net/avKzf/2/

Voici les résultats des tests :

  • l'entrée : "ab-cd-ef", résultat : "abCdEf"
  • l'entrée : "ab-cd-ef-", résultat : "abCdEf"
  • l'entrée : "ab-cd-ef--", résultat : "abCdEf"
  • l'entrée : "ab-cd--ef--", résultat : "abCdEf"
  • l'entrée : "--ab-cd--ef--", résultat : "AbCdEf"
  • l'entrée : "--ab-cd-__-ef--", résultat : "AbCdEf"

Notez que les chaînes de caractères qui commencent par des délimiteurs auront pour résultat une lettre majuscule au début. Si ce n'est pas ce que vous attendez, vous pouvez toujours utiliser lcfirst. Voici mon lcfirst si vous en avez besoin :

function lcfirst(str) {
    return str && str.charAt(0).toLowerCase() + str.substring(1);
}

2voto

student Points 87

Vous pouvez également mettre en œuvre une méthode d'extension purement javascript comme ceci :

String.prototype.capitalize = function () {

    return this.toLowerCase().replace(/\b[a-z]/g, function (letter) {
        return letter.toUpperCase();
    });
};

Et appelez ça comme ça :

"HELLO world".capitalize()

1voto

surinder singh Points 179
    function camelCase(str){
        str     = $.camelCase(str.replace(/[_ ]/g, '-')).replace(/-/g, '');
        return  str;//.substring(0,1).toUpperCase()+str.substring(1);
    },

1voto

Nalan M Points 834

Utilisez la méthode camelcase intégrée dans jquery :

$.camelCase($("#text").html());

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