Metin içinde metin aramak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Metin içinde metin aramak
Merhabalar;
Elimde bir string var,ben bu stringin içerisinde belirli kelimeler varmı yok mu diye kontrol ettirmek istiyorum. String içerisinde aradığım kelimeler:
[##ad##]
[##soyad##]
[##adres##]
vs...
bu kelimeler okuduğum string içerisinde var mı yoksa yok mu nasıl kontrol ederim??
Teşekkür ederim...
Elimde bir string var,ben bu stringin içerisinde belirli kelimeler varmı yok mu diye kontrol ettirmek istiyorum. String içerisinde aradığım kelimeler:
[##ad##]
[##soyad##]
[##adres##]
vs...
bu kelimeler okuduğum string içerisinde var mı yoksa yok mu nasıl kontrol ederim??
Teşekkür ederim...
Güçlü olan haklı değil, haklı olan güçlüdür!
evet, Pos fonksiyonu ise yariyor. fakat ben toplamda 20 kelime kontrol ettirmek istiyorum. 20 defa ayni fonksiyonu kullanip 20 sonucu kontrol ettirmek, ve o sonuca gore baska islem yaptirmak cok mantikli gelmiyor programcilik kalitesi olarak. bunun icin kullanabilecegim baska bir yontem yok mu acaba??
Güçlü olan haklı değil, haklı olan güçlüdür!
Dizi kullanmak biraz daha kısaltabilir;
gibi...
Kod: Tümünü seç
var
Arananlar: Array[1..20] of string;
i:integer;
begin
Arananlar[1]:='[##AD##]';
Arananlar[2]:='[##SOYAD##]';
//vs. vs.
For i:=1 to 20 Do
begin
if AnsiPos(arananlar[i],metin)>0 Then
begin
//işlemler
end;
end;
end;
ben javada benzer bir fonksiyon yazmıştım.
fonksiyon boolean bi değerle dönüyordu.
gibi bi kullanımı vardı. verilen stringde, verilen string dizisinin tüm elemanları var mı diye kontrol ediyordu. siz bu fonksiyonu delphi için yazarsanız güzel bir paylaşım olur.
kolay gelsin
fonksiyon boolean bi değerle dönüyordu.
Kod: Tümünü seç
if (kelimelervarmi('ali merhaba bugün işler nasıldı? doktor hastalığın konusunda ne dedi?',['ali','işler','doktor']))=true then
begin
....
end;
kolay gelsin
Kod: Tümünü seç
function TForm1.KelimelerVarMi(metin: string;
kelimeler: array of string): Boolean;
var
sonuc:boolean;
i:integer;
begin
sonuc:=True;
For i:=Low(kelimeler) to high(kelimeler) do
begin
if AnsiPos(kelimeler[i],metin)=0 Then sonuc:=False;
end;
result:=sonuc;
end;
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhaba,
Hangi yöntem olursa olsun illa bir döngü kullanman gererkecek. Ve illa bir POS işlevi kullanman gerekcek.
Ama Delphi'deki POS çok yavaş. Büyük metinlerde bunun etkisini görebilirsin.. Bunun yerine aşağıdaki adresten indireceğin POS ve benzeri String işlevlerini kullanmanı tavsiye ederim. Neredeyse %500 daha hızlı işlem yapıyor..
http://www.fastcode.dk/
Bu adamlar hızlı kod ileme ile ilgileniyorlar ve hatta yarışmalar düzenleniyor. Mesela en hızlı StringReplace kim yapacak diye..
Eskiden kendi uygulamamda, bir web sitsinin HTML kodlarını analiz yaparken bilindik POS ve AnsiReplaceString kullanırdım, şimdi bu kütüphaneyi kullanıyorum, resmen uçuyor..
Kolay glesin....
Hangi yöntem olursa olsun illa bir döngü kullanman gererkecek. Ve illa bir POS işlevi kullanman gerekcek.
Ama Delphi'deki POS çok yavaş. Büyük metinlerde bunun etkisini görebilirsin.. Bunun yerine aşağıdaki adresten indireceğin POS ve benzeri String işlevlerini kullanmanı tavsiye ederim. Neredeyse %500 daha hızlı işlem yapıyor..
http://www.fastcode.dk/
Bu adamlar hızlı kod ileme ile ilgileniyorlar ve hatta yarışmalar düzenleniyor. Mesela en hızlı StringReplace kim yapacak diye..
Eskiden kendi uygulamamda, bir web sitsinin HTML kodlarını analiz yaparken bilindik POS ve AnsiReplaceString kullanırdım, şimdi bu kütüphaneyi kullanıyorum, resmen uçuyor..
Kolay glesin....