Maison >développement back-end >C++ >Comment puis-je insérer efficacement des espaces avant les lettres majuscules dans une chaîne, tout en gérant des acronymes ?
Insertion d'espaces avant les lettres majuscules dans les chaînes
Étant donné une chaîne comme "ThisStringHasNoSpacesButItDoesHaveCapitals", de nombreux développeurs recherchent des méthodes pour insérer des espaces avant les majuscules, en le transformant en "Cette chaîne n'a pas d'espaces mais elle en a Majuscules."
Bien que des expressions régulières puissent être utilisées, telles que System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " $0"), elles présentent des inconvénients en termes de performances.
Une approche alternative consiste à utiliser une fonction personnalisée telle que :
string AddSpacesToSentence(string text) { if (string.IsNullOrWhiteSpace(text)) return ""; StringBuilder newText = new StringBuilder(text.Length * 2); newText.Append(text[0]); for (int i = 1; i < text.Length; i++) { if (char.IsUpper(text[i]) && text[i - 1] != ' ') newText.Append(' '); newText.Append(text[i]); } return newText.ToString(); }
Cette fonction surpasse l'approche regex, complétant 100 000 conversions de la chaîne "Abbbbbbbbb" répétées 100 fois en seulement 7,6 % du temps.
Gestion des acronymes
Pour répondre aux préoccupations potentielles concernant les acronymes, la fonction peut être modifié comme suit :
string AddSpacesToSentence(string text, bool preserveAcronyms) { if (string.IsNullOrWhiteSpace(text)) return ""; StringBuilder newText = new StringBuilder(text.Length * 2); newText.Append(text[0]); for (int i = 1; i < text.Length; i++) { if (char.IsUpper(text[i])) if ((text[i - 1] != ' ' && !char.IsUpper(text[i - 1])) || (preserveAcronyms && char.IsUpper(text[i - 1]) && i < text.Length - 1 && !char.IsUpper(text[i + 1]))) newText.Append(' '); newText.Append(text[i]); } return newText.ToString(); }
Cette fonction mise à jour conservera correctement les acronymes dans la chaîne formatée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!