Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memasukkan Ruang dengan Cekap Sebelum Huruf Besar dalam Rentetan?
Memasukkan Ruang ke dalam Peralihan Selongsong
Objektifnya adalah untuk mengubah rentetan seperti "ThisStringHasNoSpacesButItDoesHaveCapitals" menjadi "This String There No Spaces But It Does Mempunyai Huruf Besar" dengan memperkenalkan ruang sebelum huruf besar aksara.
Pendekatan Regex
Ekspresi biasa memang boleh digunakan untuk tujuan ini. Regex "[A-Z]" mengenal pasti huruf besar dan " $0" menambah ruang sebelum setiap perlawanan:
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(); }")
Walau bagaimanapun, regex boleh menjadi mahal dari segi pengiraan dan kurang boleh dibaca untuk corak yang kompleks.
Pendekatan Berulang
Pendekatan alternatif adalah dengan mengulang melalui rentetan aksara mengikut aksara:
Fungsi ini menyemak peralihan antara huruf kecil ke huruf besar, mengendalikan akronim secara pilihan.
Perbandingan Prestasi
Dari segi prestasi, pendekatan berulang dengan ketara mengatasi pendekatan regex, menunjukkan 92.4% pengurangan dalam masa pelaksanaan untuk rentetan dengan 1,000 huruf besar berturut-turut. Ia menukar kesederhanaan kod dengan kelajuan.
Akhirnya, pilihan antara pendekatan ini bergantung pada prestasi khusus dan keperluan kebolehbacaan setiap projek.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Ruang dengan Cekap Sebelum Huruf Besar dalam Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!