2009-05-13 9 views

Répondre

10

C'est le même que la réponse de Rafael mais sans avertissement :)

str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()}); 
+0

Fonctionne comme un champion. Merci! –

11

Essayez

str.replace(/\b./g,function(m){return String(m).toUpperCase()}); 

explication:

l'expression régulière /\b./g correspond à une limite de mot suivi d'un caractère. Toutes les correspondances seront transmises à la fonction anonyme définie dans le second paramètre de la méthode de remplacement. La fonction renvoie le match capitalisé.

+0

Bonjour votre code fonctionne très bien, mais vous aviez 1 erreur que je devais corriger, vous avez 1 trop) à la fin. Merci. –

0

J'ai fait les modifications suivantes à franchir quelques erreurs et avertissements:

str.replace (/ \ b./g,function(m:String):String{return m.toUpperCase()});

mais cela m'a donné un accident étrange, en disant qu'il avait trois paramètres alors qu'un seul était attendu.

J'ai essayé de réparer l'expression rationnelle, mais mon regex-fu n'est pas génial. Alors j'ai piqué. Cela fonctionne (au moins, pour le premier mot d'une chaîne). Pour plusieurs mots, vous devez utiliser la division.

str = str.substr (0,1) .àUpperCase() + str.substr (1, str.length);

+0

J'ai eu la même erreur quand j'ai essayé de le faire aussi, mais en laissant la façon dont Rafael l'a fait fonctionner. –

+0

J'ai finalement trouvé comment faire ce travail sans aucune erreur ou avertissement: str.replace (/ \ b./g,function(...m):String{return m [0] .toUpperCase()}); –

1

La réponse acceptée suppose que la chaîne est tout en minuscule pour commencer. Si vous commencez avec une chaîne avec tous les majuscules ou les cas mixtes aléatoires, cela ne fonctionnera pas.

Voici une modification simple qui ne nécessite pas la chaîne source à tous les minuscules pour commencer:

str.toLowerCase().replace(/\b./g,function(...m):String{return m[0].toUpperCase()}); 
1

J'ai eu quelques problèmes avec des caractères spéciaux en portugais, donc je l'ai changé à ce RegExp :

str.replace(/(^|\s|\t)+\S/g, function(...m):String{return m[0].toUpperCase()}); 
Questions connexes