2008-11-14 6 views
6

Je voudrais prendre une chaîne de pascal comme "CountOfWidgets" et la convertir en quelque chose de plus convivial comme "Count of Widgets" en C#. Plusieurs caractères majuscules adjacents doivent rester intacts. Quel est le moyen le plus efficace de le faire?Fractionner une chaîne de cas Pascal en un ensemble logique de mots

NOTE: en double de .NET - How can you split a "caps" delimited string into an array?

+0

Ce n'est pas une double question parce que la réponse liée à ne répondre pas « Multiple " – PandaWood

Répondre

13

Je ne sais pas efficace, mais au moins il est laconique:

Regex r = new Regex("([A-Z]+[a-z]+)"); 
string result = r.Replace("CountOfWidgets", m => (m.Value.Length > 3 ? m.Value : m.Value.ToLower()) + " "); 
+0

Cela laisse un espace à la fin de" FormatRange "->" FormatRange "- donc un ajustement serait utile et la vérification de la longueur de 3 est une manière peu fiable de s'assurer que" plusieurs majuscules adjacentes doivent être laissé intacte". Cela espère juste que quelque chose de moins de 3 caractères devrait être laissé. Donc "PubID" va à "publ ID" ce qui ne va pas – PandaWood

Questions connexes