kaçıncı kelime
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
kaçıncı kelime
merhaba
bir kelimenin richeditte kacıncı kelime(harf karakter degil) oldugunu nasıl bulabilirim.
ornegin;
agaclar bu bahar elma vermedi gene; cumlesinde
elma kacinci kelime 4 olarak sonuc vermesi lazim.
bir kelimenin richeditte kacıncı kelime(harf karakter degil) oldugunu nasıl bulabilirim.
ornegin;
agaclar bu bahar elma vermedi gene; cumlesinde
elma kacinci kelime 4 olarak sonuc vermesi lazim.
Re: kaçıncı kelime
döngüyü kuramadim yapamadim
Re: kaçıncı kelime
Merhaba,
Belirttiğiniz kod eksik ve derlenemeyecek kadar hatalı. Doğru kullanımı şöyle olmalı;
Kod: Tümünü seç
var
Deger: string;
Konum: Integer;
begin
Deger := 'agaclar bu bahar elma vermedi gene;';
Konum := Pos('elma', Deger);
end;
Re: kaçıncı kelime
Merhaba,
Öncelikle RichEdit içindeki bilgileri metin olarak (formatsız) şekilde bir değişkene atayın. Ardından aşağıdaki gibi bir kod ile istediğinizi yapmanız mümkün olabilir.
Kod: Tümünü seç
const
WordSeparatorChars: TArray<Char> = [' ', ',', '.'];
function GetWordPosition(const Word, Value: string; CaseInsensitive: Boolean = False): Integer;
var
WordCount: Integer;
I: Integer;
I2: Integer;
ControlChar: PChar;
WordCharPosition: Integer;
begin
if CaseInsensitive then
WordCharPosition := Pos(Word.ToUpper(), Value.ToUpper())
else
WordCharPosition := Pos(Word, Value);
if WordCharPosition = 0 then Exit(0);
ControlChar := Pointer(Value);
WordCount := 1;
for I := 1 to WordCharPosition do
begin
for I2 := Low(WordSeparatorChars) to High(WordSeparatorChars) do
if ControlChar^ = WordSeparatorChars[I2] then
Inc(WordCount);
Inc(ControlChar);
end;
Result := WordCount;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
Konum: Integer;
begin
Konum := GetWordPosition(edtWord.Text, edtValue.Text, True);
ShowMessage(Format('"%s" kelimesi "%s" cümlesi içinde %d. kelimedir', [edtWord.Text, edtValue.Text, Konum]));
end;
Kelime ayracı kısmını ("WordSeparatorChars" sabiti) kendinize göre ayarlamanız gerekebilir. Ben basit olması adına nokta, virgül ve boşluk işaretlerini kelime ayırıcı karakterler olacak şekilde tanımladım. Ayrıca ihtiyaç olabileceği için küçük/büyük karakter ayrımı yapmayan veya yapan şekilde çalışabilecek şekilde hazırlanmış bir örnek koddur.
- Dosya ekleri
-
- word_position.7z
- (52.23 KiB) 113 kere indirildi
Re: kaçıncı kelime
En basit en doğru çözüm önce kelimeleri bölerek(boşluk virgül nokta) bir stringliste atın. Ardından kaçıncı kelimede olduğunu for ile birebir aratmalısınız pos yaparsanız aksi durumda pos ile "elmas" kelimesini de elma olarak veya "selma", "selmalar", "elmaslar" gibi kelimeleri de "elma" olarak alır.
PostgreSQL - Delphi - Linux
Re: kaçıncı kelime
Alternatif olarak yine paylaşmış olduğum kod kullanarak aranan kelime başına bir boşluk eklenebilir3ddark yazdı: ↑23 Şub 2020 06:38 En basit en doğru çözüm önce kelimeleri bölerek(boşluk virgül nokta) bir stringliste atın. Ardından kaçıncı kelimede olduğunu for ile birebir aratmalısınız pos yaparsanız aksi durumda pos ile "elmas" kelimesini de elma olarak veya "selma", "selmalar", "elmaslar" gibi kelimeleri de "elma" olarak alır.
Kod: Tümünü seç
Konum := GetWordPosition(' ' + Trim(edtWord.Text), edtValue.Text, True);
Re: kaçıncı kelime
Bence de.3ddark yazdı: ↑23 Şub 2020 06:38 En basit en doğru çözüm önce kelimeleri bölerek(boşluk virgül nokta) bir stringliste atın. Ardından kaçıncı kelimede olduğunu for ile birebir aratmalısınız pos yaparsanız aksi durumda pos ile "elmas" kelimesini de elma olarak veya "selma", "selmalar", "elmaslar" gibi kelimeleri de "elma" olarak alır.
TStringList'in Delimiter özelliğini ' ' (bir boşluk) yapın, DelimitedText özelliğine de cümlenizi atayın. Kelimelere ayırmış olursunuz. Forumda bu konuda çokça örnek var:
There's no place like 127.0.0.1