Heim > Backend-Entwicklung > C++ > Wie fügt man in einer Zeichenfolge effizient Leerzeichen vor Großbuchstaben ein?

Wie fügt man in einer Zeichenfolge effizient Leerzeichen vor Großbuchstaben ein?

Patricia Arquette
Freigeben: 2024-12-26 13:39:09
Original
580 Leute haben es durchsucht

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

Leerzeichen vor Großbuchstaben einfügen

Beim Umgang mit Text, der Groß- und Kleinbuchstaben enthält, ist es oft wünschenswert, Wörter durch Einfügen von Leerzeichen zu trennen vor Großbuchstaben. Dies kann die Lesbarkeit verbessern und die Unterscheidung verschiedener Wörter erleichtern.

Regex-Methode

Ein gängiger Ansatz besteht darin, einen regulären Ausdruck zu verwenden, um nach Großbuchstaben zu suchen und diese zu ersetzen mit vorangestellten Kleinbuchstaben. Der folgende reguläre Ausdruck stimmt mit allen Großbuchstaben überein, denen ein Kleinbuchstabe vorangestellt ist:

[A-Z]
Nach dem Login kopieren

Um vor diesen Großbuchstaben ein Leerzeichen einzufügen, können Sie das folgende Ersetzungsmuster verwenden:

\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();
}
Nach dem Login kopieren
")

Dies Das Ersetzungsmuster verwendet die Zeichenklasse s, um vor dem passenden Großbuchstaben ein Leerzeichen einzufügen, während $0 die passende Teilzeichenfolge darstellt. Hier ist ein Beispiel für die Verwendung dieser Regex:

Manuelle Methode

Regexes können zwar effektiv sein, aber auch komplex und leistungsintensiv sein. Ein alternativer Ansatz besteht darin, die Zeichenfolge manuell Zeichen für Zeichen zu durchlaufen und bei Bedarf Leerzeichen einzufügen. Der folgende Codeausschnitt demonstriert diese Methode:

Dieser Code durchläuft jedes Zeichen in der Zeichenfolge und prüft, ob es ein Großbuchstabe ist. Wenn dies der Fall ist und ihm ein Kleinbuchstabe vorangestellt ist (es sei denn, der Parameter „preserveAcronyms“ ist auf „true“ gesetzt und das vorherige Zeichen ebenfalls ein Großbuchstabe ist), wird ein Leerzeichen eingefügt.

Überlegungen zur Leistung

Die Regex-Methode kann deutlich langsamer sein als die manuelle Methode, insbesondere bei großen Strings. Die manuelle Methode ist jedoch komplexer und für einige Entwickler möglicherweise weniger lesbar. Letztendlich hängt die beste Wahl zwischen diesen beiden Methoden von den Leistungsanforderungen und Lesbarkeitspräferenzen Ihres spezifischen Projekts ab.

Das obige ist der detaillierte Inhalt vonWie fügt man in einer Zeichenfolge effizient Leerzeichen vor Großbuchstaben ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage