Delphi 2007 kullanıyorum ve bir dizenin başka bir dizede kaç kez geçtiğini saymanın basit bir yolu olup olmadığını merak ediyorum. Kullanabileceğim yerleşik işlevler var mı?Delphi: başka bir dizgede bir dizgenin kaç kez oluştuğunu saymak
Örnekler: "? Nasılsın"
- dize kere geçer "Nasıl"
- "Yap", "Nasıl Yaparsınız?" Dizesinde iki kez oluşur. Şimdiye kadar bunun için gördüğüm en zeki yollarından
2 PosEx yazılmış olabilir "offset: = PosEx (alt dize, Metin, + uzunluğunu (alt dize) ofset);" Eğer tekrarlayan alt dizeleri umurumda değil eğer. ;) –
@ A.Bouchez: Evet, bu çok doğru. Hatta alt tabakaların gerçek uzunluğunu kullanmanız gerektiğini bile söyleyeyim * özellikle * eğer (Patolojik) girdiler varsa, 'Geçişler (' ddd ',' dddddddd ') 'gibi. Bunu değiştirdim. Tabii ki, performans için döngüden önce len: = uzunluk (Substring) 'yi kaydetmek iyi bir fikirdir (veya derleyici bu optimizasyonu kendi başına yapacak kadar akıllı mıdır?). –
+1 Muhtemelen bir var kullanmalı ve SubString uzunluğunu Uzunlukta yinelenen çağrıları engellemek için içerdim. Ancak, Uzunluk gerçekten de sadece bir OfSubString'den bir negatif sapma okunduğundan, muhtemelen bir performans artışı değil. . :) –