Heim >Backend-Entwicklung >C++ >Wie kann ich beim Umgang mit Akronymen effizient Leerzeichen vor Großbuchstaben in einer Zeichenfolge einfügen?
Einfügen von Leerzeichen vor Großbuchstaben in Zeichenfolgen
Bei einer Zeichenfolge wie „ThisStringHasNoSpacesButItDoesHaveCapitals“ suchen viele Entwickler nach Methoden, um Leerzeichen vor Großbuchstaben einzufügen. umwandeln in „Diese Zeichenfolge hat keine Leerzeichen, aber sie hat.“ Großbuchstaben.“
Obwohl reguläre Ausdrücke wie System.Text.RegularExpressions.Regex.Replace(value, „[A-Z]“, „ $0“) verwendet werden können, bringen sie Leistungseinbußen mit sich.
Ein alternativer Ansatz ist die Verwendung einer benutzerdefinierten Funktion wie:
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(); }
Diese Funktion übertrifft den Regex-Ansatz und vervollständigt 100.000 Konvertierungen der Zeichenfolge „Abbbbbbbbb“ werden 100 Mal in nur 7,6 % der Zeit wiederholt.
Akronymbehandlung
Um potenzielle Bedenken hinsichtlich Akronymen auszuräumen, kann die Funktion sein wie folgt geändert:
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(); }
Diese aktualisierte Funktion behält Akronyme korrekt bei in der formatierten Zeichenfolge.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Umgang mit Akronymen effizient Leerzeichen vor Großbuchstaben in einer Zeichenfolge einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!