ケース遷移へのスペースの挿入
目的は、「ThisStringHasNoSpacesButItDoesHaveCapitals」のような文字列を「この文字列にはスペースがありませんが、あります」に変換することです。大文字の前にスペースを導入することで「大文字を使用」
正規表現アプローチ
正規表現は実際にこの目的に使用できます。正規表現「[A-Z]」は大文字を識別し、「 $0」は各一致の前にスペースを追加します。
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(); }
ただし、正規表現は計算コストが高く、複雑なパターンの場合は読みにくくなる可能性があります。
反復アプローチ
代替アプローチは反復です。
この関数は、オプションで頭字語を処理しながら、小文字から大文字への移行をチェックします。
パフォーマンスの比較
パフォーマンスの点では、反復アプローチは正規表現アプローチよりも大幅に優れており、 1,000 個連続する大文字を含む文字列の実行時間が 92.4% 短縮されました。コードの簡素化と速度のトレードオフになります。
最終的に、これらのアプローチのどちらを選択するかは、各プロジェクトの特定のパフォーマンスと読みやすさの要件によって決まります。
以上が文字列の大文字の前にスペースを効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。