ホームページ > バックエンド開発 > C++ > 文字列の大文字の前にスペースを効率的に挿入するにはどうすればよいですか?

文字列の大文字の前にスペースを効率的に挿入するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-26 13:39:09
オリジナル
581 人が閲覧しました

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

大文字の前にスペースを挿入する

大文字と小文字を含むテキストを扱う場合、スペースを追加して単語を区切ることが望ましいことがよくあります。大文字の前に。これにより、可読性が向上し、さまざまな単語を区別しやすくなります。

正規表現メソッド

一般的なアプローチの 1 つは、正規表現を使用して大文字を検索して置換することです。先頭に小文字が付きます。次の正規表現は、前に小文字が続くすべての大文字と一致します:

[A-Z]
ログイン後にコピー

これらの大文字の前にスペースを挿入するには、次の置換パターンを使用できます:

\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();
}
ログイン後にコピー
")

This置換パターンは s 文字クラスを使用して、一致する大文字の前にスペースを挿入します。一方、$0 は一致する部分文字列を表します。この正規表現を使用した例を次に示します。

手動メソッド

正規表現は効果的ですが、パフォーマンスの点で複雑でコストがかかる可能性もあります。別の方法は、文字列を 1 文字ずつ手動で繰り返し、必要に応じてスペースを挿入することです。次のコード スニペットは、このメソッドを示しています。

このコードは、文字列内の各文字を反復処理し、それが大文字であるかどうかを確認します。そうであり、その前に小文字がある場合 (preserveAcronyms パラメーターが true に設定されており、前の文字も大文字でない限り)、スペースが挿入されます。

パフォーマンスに関する考慮事項

正規表現による方法は、特に大きな文字列の場合、手動による方法よりも大幅に時間がかかる可能性があります。ただし、手動による方法はより複雑で、一部の開発者にとっては読みにくい場合があります。最終的に、これら 2 つの方法の間で最適な選択は、特定のプロジェクトのパフォーマンス要件と読みやすさの好みによって決まります。

以上が文字列の大文字の前にスペースを効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート