Maison > développement back-end > C++ > Comment insérer efficacement des espaces avant les lettres majuscules dans une chaîne ?

Comment insérer efficacement des espaces avant les lettres majuscules dans une chaîne ?

Linda Hamilton
Libérer: 2024-12-29 21:21:15
original
800 Les gens l'ont consulté

How to Efficiently Insert Spaces Before Uppercase Letters in a String?

Insertion d'espaces dans les transitions de casse

L'objectif est de transformer une chaîne comme "ThisStringHasNoSpacesButItDoesHaveCapitals" en "Cette chaîne n'a pas d'espaces mais elle en a Avoir des majuscules" en introduisant des espaces précédant les majuscules caractères.

Approche Regex

Les expressions régulières peuvent en effet être utilisées à cette fin. L'expression régulière "[A-Z]" identifie les lettres majuscules et "$0" ajoute un espace avant chaque correspondance :

System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " <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();
}
Copier après la connexion
")

Cependant, les expressions régulières peuvent être coûteuses en termes de calcul et moins lisibles pour les modèles complexes.

Approche itérative

Une approche alternative consiste à parcourir le caractère de chaîne en caractère :

Cette fonction vérifie la transition entre les caractères minuscules et majuscules, en gérant éventuellement les acronymes.

Comparaison des performances

En termes de performances , l'approche itérative surpasse considérablement l'approche regex, démontrant une réduction de 92,4 % du temps d'exécution pour une chaîne avec 1 000 lettres majuscules consécutives. Il troque la simplicité du code contre la rapidité.

En fin de compte, le choix entre ces approches dépend des exigences spécifiques de performances et de lisibilité de chaque projet.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal