Rumah >pembangunan bahagian belakang >C++ >Apakah cara terpantas untuk mengira kejadian rentetan dalam .net?

Apakah cara terpantas untuk mengira kejadian rentetan dalam .net?

Patricia Arquette
Patricia Arquetteasal
2025-01-31 06:41:07378semak imbas

What's the Fastest Way to Count String Occurrences in .NET?

Cara terbaik untuk mengira kiraan rentetan

Cari semua kali dalam watak tertentu atau sub -string dalam rentetan yang diberikan dalam .net. Artikel ini memberi tumpuan kepada kaedah yang paling berkesan dan mudah, terutamanya apabila slash (/) dalam rentetan statistik.

Pertama sekali, anda boleh mempertimbangkan menggunakan penggantian watak, contohnya:

atau, untuk sub -string dengan panjang lebih daripada satu watak, anda boleh menggunakan:
<code class="language-csharp">string source = "/once/upon/a/time/";
int count = source.Length - source.Replace("/", "").Length;</code>

<code class="language-csharp">string haystack = "/once/upon/a/time/";
string needle = "/";
int needleCount = (haystack.Length - haystack.Replace(needle, "").Length) / needle.Length;</code>

atau, anda boleh memilih:

<code class="language-csharp">int count = source.Count(f => f == '/');</code>

Mengejutkan, kaedah penyingkiran watak awal adalah kira -kira 30%lebih cepat daripada kaedah LINQ atau Split. Ujian penanda aras rentetan "/sekali/on/a/time/" menghasilkan hasil kronograf berikut:

<code class="language-csharp">int count = source.Split('/').Length - 1;</code>

Kaedah Penggantian Karakter: 12 saat

    source.count: 19 saat
  • source.split: 17 saat
  • loop foreach (dari jawapan lain): 10 saat
  • Walaupun perbezaan masa ini mungkin tidak jelas dalam aplikasi praktikal, kaedah penggantian watak asal masih terpantas untuk keadaan ini.

Atas ialah kandungan terperinci Apakah cara terpantas untuk mengira kejadian rentetan dalam .net?. 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