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
Linda Hamiltonasal
2024-12-29 21:21:15799semak imbas

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

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:
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