2010-09-26 3 views
1

Est-il possible de convertir une chaîne tout en majuscule en une chaîne où seule la première lettre de chaque mot est en majuscule en utilisant des expressions régulières?Est-ce que je peux appliquer une enveloppe de mots à une chaîne en utilisant des expressions régulières?

CECI EST UN STRING EXEMPLE ---> Ceci est une chaîne d'échantillon

Au début, je pensais que ce serait une tâche facile, mais maintenant je ne sais même pas comment commencer ou même si elle est possible.

+0

Quelle langue utilisez-vous? –

+0

Aucune langue particulière. J'en ai besoin pour une application personnalisée où la seule façon de transformer un texte passe par des expressions régulières. (avec les extensions Perl pour être précis) –

+0

Les expressions rationnelles sont des accepteurs de symboles, elles ne sont utilisées que pour faire correspondre des chaînes. Vous devez vraiment spécifier le type de "remplacement" auquel vous faites référence. Une opération de remplacement a une étape de "correspondance" (c'est-à-dire les drapeaux d'expression rationnelle + des drapeaux) et une étape de substitution (c'est-à-dire l'expression de remplacement). Selon l'implémentation, l'expression de remplacement peut contenir des références de groupe (par exemple $ 1) et d'autres types d'opérations (par exemple "retain-case", "to-majuscule"). – gawi

Répondre

3

En Perl:

$string =~ s/([\w']+)/\u\L$1/g; 

(tiré de la FAQ Perl)

1

Non, dans la plupart des langues, vous ne pouvez pas utiliser d'expressions régulières pour le faire. Une exception à ceci est Perl qui a une syntaxe d'expression "régulière" particulièrement puissante.

Vous trouverez probablement que votre langue a une fonction de bibliothèque qui peut le faire. Recherchez quelque chose comme s.titlecase().

connexes:

Questions connexes