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

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

Linda Hamilton
Lepaskan: 2024-12-29 21:21:15
asal
798 orang telah melayarinya

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

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();
}
Salin selepas log masuk
")

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan