Leerzeichen in Groß-/Kleinschreibung einfügen
Das Ziel besteht darin, eine Zeichenfolge wie „ThisStringHasNoSpacesButItDoesHaveCapitals“ in „Diese Zeichenfolge hat keine Leerzeichen, aber sie tut es“ umzuwandeln „Haben Sie Großbuchstaben“, indem Sie Leerzeichen vor Großbuchstaben einfügen Zeichen.
Regex-Ansatz
Reguläre Ausdrücke können für diesen Zweck tatsächlich verwendet werden. Der reguläre Ausdruck „[A-Z]“ identifiziert Großbuchstaben und „$0“ fügt vor jeder Übereinstimmung ein Leerzeichen hinzu:
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(); }
Regexes können jedoch rechenintensiv und bei komplexen Mustern weniger lesbar sein.
Iterativer Ansatz
Ein alternativer Ansatz besteht darin, die Zeichenkette by zu durchlaufen Zeichen:
Diese Funktion prüft den Übergang zwischen Klein- und Großbuchstaben und verarbeitet optional Akronyme.
Leistungsvergleich
Leistungsmäßig , übertrifft der iterative Ansatz den Regex-Ansatz deutlich und zeigt eine Reduzierung der Ausführungszeit um 92,4 % für einen String mit 1.000 aufeinanderfolgenden Großbuchstaben Buchstaben. Dabei geht es um Code-Einfachheit und Geschwindigkeit.
Letztendlich hängt die Wahl zwischen diesen Ansätzen von den spezifischen Leistungs- und Lesbarkeitsanforderungen jedes Projekts ab.
Das obige ist der detaillierte Inhalt vonWie fügt man Leerzeichen vor Großbuchstaben in einer Zeichenfolge effizient ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!