Pos(Harf/Kelime, İçindeAranılanMetin)
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Pos(Harf/Kelime, İçindeAranılanMetin)
Selam..
bir yazi düsünün mesela...
"ANKARALI"
Burada ben mesela A harfinin son kullanildigi yerin pos'unu bulmak istiyorum.. veya 2. veya 3. veya 4. kez kullanildigi yerin position'ını bulmak istiyorum..
Pos('A','ANKARALI') dedigimde ilk 'A' yı buluyor.. ama ben diyeim ki son kullanıldıgı yeri.. veya 3. kez kullanıldıgı yeri bulmak istiyorum...
Nasıl yapabilirim?
Allah hepinizi korusun
bir yazi düsünün mesela...
"ANKARALI"
Burada ben mesela A harfinin son kullanildigi yerin pos'unu bulmak istiyorum.. veya 2. veya 3. veya 4. kez kullanildigi yerin position'ını bulmak istiyorum..
Pos('A','ANKARALI') dedigimde ilk 'A' yı buluyor.. ama ben diyeim ki son kullanıldıgı yeri.. veya 3. kez kullanıldıgı yeri bulmak istiyorum...
Nasıl yapabilirim?
Allah hepinizi korusun
MT
Şu kod işini görebilir:
İyi çalışmalar.
Kod: Tümünü seç
function BelirtilenPos(const aSubstr: string; aStr: string; aPosition: Integer): Integer;
//aPosition < 1 ise en sonuncuyu gösterir.
var
I, L, P: Integer;
aFindLast: Boolean;
begin
Result := 0;
L := Length(aSubstr);
if (L = 0) or (L > Length(aStr)) then Exit;
if aPosition < 1 then
begin
aFindLast := TRUE;
aPosition := High(Integer);
end
else
aFindLast := FALSE;
for I := 1 to aPosition do
begin
P := Pos(aSubstr, aStr);
if P < 1 then
begin
if not aFindLast then Result := 0;
Exit;
end;
if I = 1 then
Result := P
else
Result := Result + P + L - 1;
System.Delete(aStr, 1, P + L - 1);
end;
end;
ShowMessage(IntToStr(BelirtilenPos('A', 'ANKARALI', 1)));
ShowMessage(IntToStr(BelirtilenPos('A', 'ANKARALI', 2)));
ShowMessage(IntToStr(BelirtilenPos('A', 'ANKARALI', 3)));
ShowMessage(IntToStr(BelirtilenPos('A', 'ANKARALI', 4)));
ShowMessage(IntToStr(BelirtilenPos('A', 'ANKARALI', 0)));
Hazırı var.
StrUtils unitinde
StrUtils unitinde
Kod: Tümünü seç
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
Merhaba,
Yine bir pos kullanmanız lazım.
bana 2 değerini veriyor.
bana 8 değerini veriyor. Yani birinci a nın pozisyonundan yüksek bir rakam verdiğim zaman 2. nin pozisyonunu veriyor.
Veya ben örneği yanlış kuruyorum. Yanlışsa bize örnek verebilir misiniz?
Kolay gelsin.
sizin verdiğiniz fonksiyon tam olarak arkadaşımızın işini görmüyor. Çünkü cardinal a değer vermeniz gerekir. Ve o değeri nerden bulacaksınız?coderlord yazdı:Hazırı var.
StrUtils unitinde
Kod: Tümünü seç
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
Yine bir pos kullanmanız lazım.
Kod: Tümünü seç
showmessage(inttostr(PosEx('a','kadri yalcın ', 1)));
Kod: Tümünü seç
showmessage(inttostr(PosEx('a','kadri yalcın ', 3)));
Veya ben örneği yanlış kuruyorum. Yanlışsa bize örnek verebilir misiniz?
Kolay gelsin.
Yukarıda diğer arkadaşın verdiği örnekte de değer vermeniz gerekiyor. Fark nedir anlayamadım?ofenX yazdı: sizin verdiğiniz fonksiyon tam olarak arkadaşımızın işini görmüyor. Çünkü cardinal a değer vermeniz gerekir. Ve o değeri nerden bulacaksınız?
Yine bir pos kullanmanız lazım.
Beklenen bu zaten. Evet...ofenX yazdı:bana 2 değerini veriyor.Kod: Tümünü seç
showmessage(inttostr(PosEx('a','kadri yalcın ', 1)));
Olması gereken de bu. Arkadaş sorusunda 2. veya 3. kullanıldığı yeri bulmak istiyorum demiş. Siz zaten örnekleri gayet güzel vermişsiniz.ofenX yazdı:bana 8 değerini veriyor. Yani birinci a nın pozisyonundan yüksek bir rakam verdiğim zaman 2. nin pozisyonunu veriyor.Kod: Tümünü seç
showmessage(inttostr(PosEx('a','kadri yalcın ', 3)));
Bunu nasıl kullanırsınıza gelirsek.
Kod: Tümünü seç
Index:= PosEx('a','kadri yalcın ');
Kod: Tümünü seç
Index:= PosEx('a','kadri yalcın ', Index + 1);
4. için, bir önce tespit edilen index'ten sonrakinden başlıyoruz gene.
Kod: Tümünü seç
Index:= PosEx('a','kadri yalcın ', Index + 1);
Hakan Can arkadasimizin verdigi kod isimi gordu ilgilenen herkesecok tesekkür ederim...
biraz yüzsüzlük olucak ama birsey daha sormak istiyorum...
bir de bir kelimedeki belirtilen harf sayisini bulmayı nasil yapabilirim?
Örneğin TÜRKİYE kelimesindeki R sayısını bulmak istiyorum...
1 tane diyecek.. Aklimda bisey var ama daha kolay bi yolu varmi diye soruyorum .. .aklimdaki su..
var
sayi, i : integer;
s : ansistring;
begin
s := Edit1.text;
for i := 1 to length(s) do
if edit1.text = 'A' then sayi = sayi +1;
showmessage(inttostr(sayi));
end;
bunun disinda daha kolay bir yolu varmi?

biraz yüzsüzlük olucak ama birsey daha sormak istiyorum...
bir de bir kelimedeki belirtilen harf sayisini bulmayı nasil yapabilirim?
Örneğin TÜRKİYE kelimesindeki R sayısını bulmak istiyorum...
1 tane diyecek.. Aklimda bisey var ama daha kolay bi yolu varmi diye soruyorum .. .aklimdaki su..
var
sayi, i : integer;
s : ansistring;
begin
s := Edit1.text;
for i := 1 to length(s) do
if edit1.text = 'A' then sayi = sayi +1;
showmessage(inttostr(sayi));
end;
bunun disinda daha kolay bir yolu varmi?
MT
Kod: Tümünü seç
function NumberOfSubStringInString(const aSubString: string; aMainString: string): Integer;
var
I, L: Integer;
begin
Result := 0;
L := Length(aSubString);
if L = 0 then Exit;
repeat
I := Pos(aSubString, aMainString);
if I = 0 then Exit;
Inc(Result);
System.Delete(aMainString, 1, I + L - 1);
until 1 = 2;
end;
saolasinHakan Can yazdı:Kod: Tümünü seç
function NumberOfSubStringInString(const aSubString: string; aMainString: string): Integer; var I, L: Integer; begin Result := 0; L := Length(aSubString); if L = 0 then Exit; repeat I := Pos(aSubString, aMainString); if I = 0 then Exit; Inc(Result); System.Delete(aMainString, 1, I + L - 1); until 1 = 2; end;

MT