Maison >développement back-end >C++ >Comment insérer efficacement des espaces avant les majuscules dans une chaîne ?
Insérer des espaces avant les lettres majuscules
Lorsque vous traitez un texte contenant des lettres majuscules et minuscules, il est souvent souhaitable de séparer les mots en ajoutant des espaces avant les majuscules. Cela peut améliorer la lisibilité et faciliter la distinction entre différents mots.
Méthode Regex
Une approche courante consiste à utiliser une expression régulière pour rechercher et remplacer des lettres majuscules. précédé de lettres minuscules. L'expression régulière suivante correspondra à toutes les lettres majuscules précédées d'une lettre minuscule :
[A-Z]
Pour insérer un espace avant ces lettres majuscules, vous pouvez utiliser le modèle de remplacement suivant :
\s<pre class="brush:php;toolbar:false">System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", "\s<pre class="brush:php;toolbar:false">string AddSpacesToSentence(string text, bool preserveAcronyms) { if (string.IsNullOrWhiteSpace(text)) return string.Empty; 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(); }")
Ceci Le modèle de remplacement utilise la classe de caractères s pour insérer un espace avant la lettre majuscule correspondante, tandis que $0 représente la sous-chaîne correspondante. Voici un exemple utilisant cette expression régulière :
Méthode manuelle
Bien que les expressions rationnelles puissent être efficaces, elles peuvent également être complexes et coûteuses en termes de performances. Une approche alternative consiste à parcourir manuellement la chaîne caractère par caractère et à insérer des espaces si nécessaire. L'extrait de code suivant illustre cette méthode :
Ce code parcourt chaque caractère de la chaîne et vérifie s'il est en majuscule. Si c'est le cas et qu'il est précédé d'une lettre minuscule (sauf si le paramètre PreserveAcronyms est défini sur true et que le caractère précédent est également majuscule), un espace est inséré.
Considérations relatives aux performances
La méthode regex peut être nettement plus lente que la méthode manuelle, en particulier pour les grandes chaînes. Cependant, la méthode manuelle est plus complexe et peut être moins lisible pour certains développeurs. En fin de compte, le meilleur choix entre ces deux méthodes dépend des exigences de performances et des préférences de lisibilité de votre projet spécifique.
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!