Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memasukkan Ruang Sebelum Huruf Besar dengan Cekap dalam Rentetan?

Bagaimana untuk Memasukkan Ruang Sebelum Huruf Besar dengan Cekap dalam Rentetan?

Patricia Arquette
Patricia Arquetteasal
2024-12-26 13:39:09575semak imbas

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

Sisipkan Ruang sebelum Huruf Besar

Apabila berurusan dengan teks yang mengandungi huruf besar dan huruf kecil, selalunya wajar untuk memisahkan perkataan dengan menambah ruang sebelum huruf besar. Ini boleh meningkatkan kebolehbacaan dan menjadikannya lebih mudah untuk membezakan antara perkataan yang berbeza.

Kaedah Regex

Satu pendekatan biasa ialah menggunakan ungkapan biasa untuk mencari dan menggantikan huruf besar didahului dengan huruf kecil. Regex berikut akan memadankan semua huruf besar yang didahului dengan huruf kecil:

[A-Z]

Untuk memasukkan ruang sebelum huruf besar ini, anda boleh menggunakan corak penggantian berikut:

\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();
}
")

Ini corak gantian menggunakan kelas aksara s untuk memasukkan ruang sebelum huruf besar yang sepadan, manakala $0 mewakili subrentetan yang sepadan. Berikut ialah contoh menggunakan regex ini:

Kaedah Manual

Walaupun regex boleh berkesan, ia juga boleh menjadi rumit dan mahal dari segi prestasi. Pendekatan alternatif adalah dengan melelaran secara manual melalui aksara rentetan mengikut aksara dan memasukkan ruang mengikut keperluan. Coretan kod berikut menunjukkan kaedah ini:

Kod ini berulang melalui setiap aksara dalam rentetan dan menyemak sama ada ia adalah huruf besar. Jika ya, dan ia didahului dengan huruf kecil (melainkan parameter preserveAcronyms ditetapkan kepada benar dan aksara sebelumnya juga huruf besar), ruang dimasukkan.

Pertimbangan Prestasi

Kaedah regex boleh menjadi jauh lebih perlahan daripada kaedah manual, terutamanya untuk rentetan besar. Walau bagaimanapun, kaedah manual adalah lebih kompleks dan mungkin kurang boleh dibaca untuk sesetengah pembangun. Akhirnya, pilihan terbaik antara dua kaedah ini bergantung pada keperluan prestasi dan keutamaan kebolehbacaan projek khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Ruang Sebelum Huruf Besar dengan Cekap dalam Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn