Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[+10 Puan] String Manipülasyon İşlemleri
#1
Merhaba,

Aşağıdaki işlemleri en pratik ve kısa yöntem ile yapan tüm arkadaşlara +10 puan verilecektir.

Not: Kullanılan yöntem ve yaklaşımın tekrar etmesi durumunda aynı yöntemden puan verilmeyecektir. Bu yüzden o yöntemi ilk kullanan puanı alır.


1. Sağdan N Karakter Alma (+2 Puan)

İçine verilen string değişkenin sonundan istenilen miktarda karakteri veren fonksiyon.


var
str:string;

begin
str := 'DelphiCan';
ShowMessage(SizinFonksiyon(str,3)); // Sondan 3 karakteri ver. Çıktı: "Can" olmalı.
end;

Dipnot: RightStr(value,3) bu işi gören System.StrUtils kütüphanesindeki bir fonksiyondur.


2. Seçilen yöne göre istenilen miktarda karakter alma (+5 Puan)

String verinin ilk/son üç karakterini alan fonksiyon.

var
str:string;

begin
str := 'DelphiCan';
ShowMessage(SizinFonksiyon(str,'L',3)); // Soldan 3 karakteri ver. Çıktı: "Del" olmalı.
ShowMessage(SizinFonksiyon(str,'R',3)); // Sağdan 3 karakteri ver. Çıktı: "Can" olmalı.
end;

3. Belirtilen string değerinin sondan N karakteri silme (+3 Puan)

String ve belirtilen miktarda karakteri soldan/sağdan silen fonksiyon.


var
str:string;

begin
str := 'DelphiCan';
ShowMessage(SizinFonksiyon(str,'L',6)); // Soldan 6 karakteri sil. Çıktı: "Can" olmalı.
ShowMessage(SizinFonksiyon(str,'R',3)); // Sağdan 3 karakteri sil. Çıktı: "Delphi" olmalı.
end;


Kolay gelsin!
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#2
Aşağıdaki kodlar Fonksiyon haline getirilince iş en kısa yoldan hallolur bence,

d:='DelphiCan';
ShowMessage('Sağdan 3 karakteri ver:'+copy(d,length(d)-2,3));
ShowMessage('Soldan 3 karakteri ver:'+copy(d,1,3));
delete(d,length(d)-2,3); // sağdan(sondan) 3 karakter sil
ShowMessage('Sağdan(sondan) 3 karakter silindi:'+d);
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#3
Bende ek soru sorayım en hızlı cevaplayana +4 Smile


verdiğim stringi sağdan veya soldan verdiğim karakter ile tamamlayacak.

function LeftPad(S: string; Ch: Char; Len: Integer): string;
function RightPad(S: string; Ch: Char; Len: Integer): string;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#4
Buda Fonksiyon hali olsun.

type
  TIstenen = (ISagdanAl, ISoldanAl, IParcaAl, ISoldanSil, ISagdanSil);
....
....

Function StringManipule(Deger:String; Istenen:TIstenen; Basla, KacAdet:Integer):String;
Begin
If (Istenen=ISagdanAl)
   Then Result:=copy(Deger,length(Deger)-(KacAdet-1),KacAdet);
If (Istenen=ISoldanAl)
   Then Result:=copy(Deger,1,KacAdet);
If (Istenen=IParcaAl)
   Then Result:=copy(Deger,Basla,KacAdet);
If (Istenen=ISoldanSil)
   Then Begin
   Delete(Deger,1,KacAdet);
   Result:=Deger;
        End;
If (Istenen=ISagdanSil)
   Then Begin
   delete(Deger,length(Deger)-(KacAdet-1),KacAdet);
   Result:=Deger;
        End;

End;

procedure TForm2.Button1Click(Sender: TObject);
var
d:string;
begin
d:='DelphiCan';
memo1.Lines.Add('Sağdan 3 karakter:'+StringManipule(d,ISagdanAl,0,3));
memo1.Lines.Add('Soldan 3 karakter:'+StringManipule(d,ISoldanAl,0,3));
memo1.Lines.Add('Parca Al:'+StringManipule(d,IParcaAl,2,3)); // 2den basla 3 karakter
memo1.Lines.Add('Soldan 3 karakter sil:'+StringManipule(d,ISoldanSil,0,6));
memo1.Lines.Add('Sağdan 3 karakter sil:'+StringManipule(d,ISagdanSil,0,3));
end;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#5
farklı bir bakış,

function SolDanAl(Text: String; Len: Integer): String;
var
 i: integer;
begin
 for I := 1 to Len do
   Result := Result + Text[i];
end;

function SagDanAl(Text: String; Len: Integer): String;
var
  i: integer;
begin
  for I := Length(Text) downto Len do
    Result := Text[i]+ Result ;
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#6
Buda yakup hocanın istediği gibi sağına, soluna veya arada istediğiniz yere, istediğiniz karakterleri, istediğiniz kadar basan kod dahil;

type
  TIstenen = (ISagdanAl, ISoldanAl, IParcaAl, ISoldanSil, ISagdanSil, ISagaEkle, ISolaEkle, IArayaEkle);


Function StringManipule(Deger,Eklenecek:String; Istenen:TIstenen; Basla, KacAdet:Integer):String;
Var
X:Integer;
Parca:String;
Begin
If (Istenen=ISagdanAl)
  Then Result:=copy(Deger,length(Deger)-(KacAdet-1),KacAdet);
If (Istenen=ISoldanAl)
  Then Result:=copy(Deger,1,KacAdet);
If (Istenen=IParcaAl)
  Then Result:=copy(Deger,Basla,KacAdet);

If (Istenen=ISoldanSil)
  Then Begin
  Delete(Deger,1,KacAdet);
  Result:=Deger;
       End;

If (Istenen=ISagdanSil)
  Then Begin
  delete(Deger,length(Deger)-(KacAdet-1),KacAdet);
  Result:=Deger;
       End;

If (Istenen=ISagaEkle)
  Then Begin
  Parca := '';
  for x:= 1 to KacAdet do Parca := Parca + Eklenecek;
  Result:=Deger+Parca;
       End;

If (Istenen=ISolaEkle)
  Then Begin
  Parca := '';
  for x:= 1 to KacAdet do Parca := Parca + Eklenecek;
  Result:=Parca+Deger;
       End;

If (Istenen=IArayaEkle)
  Then Begin
  Parca := '';
  for x:= 1 to KacAdet do Parca := Parca + Eklenecek;
  Result:=copy(Deger,1,Basla)+Parca+copy(Deger,Basla+1,Length(Deger));
       End;

End;

procedure TForm2.Button1Click(Sender: TObject);
var
d:string;
begin
d:='DelphiCan';
memo1.Lines.Add('Sağdan 3 karakter:'+StringManipule(d,'',ISagdanAl,0,3));
memo1.Lines.Add('Soldan 3 karakter:'+StringManipule(d,'',ISoldanAl,0,3));
memo1.Lines.Add('Parca Al:'+StringManipule(d,'',IParcaAl,2,3)); // 2den basla 3 karakter
memo1.Lines.Add('Soldan 6 karakter sil:'+StringManipule(d,'',ISoldanSil,0,6));
memo1.Lines.Add('Sağdan 3 karakter sil:'+StringManipule(d,'',ISagdanSil,0,3));

memo1.Lines.Add('Sağa 3 karakter 5 Ekle:'+StringManipule(d,'5',ISagaEkle,0,3));
memo1.Lines.Add('Sola 3 karakter 5 Ekle:'+StringManipule(d,'5',ISolaEkle,0,3));
memo1.Lines.Add('Soldan 6 karakter sonra 3 tane 5 Ekle Devam Et:'+StringManipule(d,'5',IArayaEkle,6,3));
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#7
c# ComObject hazırlarım

public string LeftPad(string s, int Len){
  return s.Substring(0, Len);
}
ve
uses ComObj;

procedure TForm2.btnClick(Sender: TObject);
var
oleObject: OleVariant;
begin
try 
  oleObject := CreateOleObject('CSLibrary.MyClass');
  ShowMessage('result= ' + oleObject.LeftPad('DelphiCan', 3));
except on E: Exception do
  ShowMessage('COM Error: ' + #13 + #10 + e.Message);
end;
end;
Cevapla
#8
Hepsi bir arada. Çok doğru bulmuyorum ama hepsi bir arada oldu. Bazen kafa karışıklığına neden oluyor. Ayrı olması daha anlaşılır ve müdahale etmesi basit oluyor.
  TDirection = (tdLeft, tdRight);

  TFunctionMode = (fmGet, fmDel);
...
function getLeftRightStr(pSource: string; pCount: Integer; pDirection: TDirection = tdLeft; pMode: TFunctionMode = fmGet): string;
...
function TfrmMain.getLeftRightStr(pSource: string; pCount: Integer; pDirection: TDirection; pMode: TFunctionMode): string;
var
  n1, nLen: Integer;
begin
  nLen := Length(pSource);
  if pMode = fmGet then begin
    if pDirection = tdLeft then begin
      Result := MidStr(pSource, 1, pCount);
      //ShowMessage(getLeftRightStr('DelphiCan', 3, tdLeft, fmGet)); //Soldan 3 karakteri ver. Çıktı: "Del"
    end else if pDirection = tdRight then begin
      Result := MidStr(pSource, nLen-pCount+1, pCount);
      //ShowMessage(getLeftRightStr('DelphiCan', 3, tdRight, fmGet)); //Sağdan 3 karakteri ver. Çıktı: "Can"
    end;
  end else if pMode = fmDel then begin
    if pDirection = tdLeft then begin
      Result := MidStr(pSource, pCount+1, nLen-pCount);
      //ShowMessage(getLeftRightStr('DelphiCan', 6, tdLeft, fmDel)); //Soldan 6 karakteri sil. Çıktı: "Can"
    end else if pDirection = tdRight then begin
      Result := MidStr(pSource, 1, nLen-pCount);
      //ShowMessage(getLeftRightStr('DelphiCan', 3, tdRight, fmDel)); //Sağdan 3 karakteri sil. Çıktı: "Delphi"
    end;
  end;
end;
PostgreSQL - Linux - Delphi, Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#9
1. Sağdan N Karakter Alma
String __fastcall isoRightStr(String value, int count) {
return String(value.c_str() + (value.Length() - count));
}

void __fastcall TForm1::Button1Click(TObject *Sender) {
Caption = isoRightStr("DelphiCan", 3);
}
WWW
Cevapla
#10
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Videonun üstüne de süper oldu valla Smile
Nöronlarınıza sağlık Cool
Bizde bilirdik firavunun yanında olmayı, musa'nın haklı olduğunu bilmeseydik
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Tek dizi içinde öncelik sırası belirleme (+10 puan) Abdullah ILGAZ 4 1.411 29-11-2017, Saat: 12:07
Son Yorum: SimaWB
  Bir Record'un içini doldurma (+20 puan) Tuğrul HELVACI 21 4.315 05-10-2017, Saat: 16:33
Son Yorum: ismailkocacan
  AV (Access Violation) nedir, neden bu hatayı alırız ? (+50 Puan) Tuğrul HELVACI 18 3.845 30-09-2017, Saat: 12:14
Son Yorum: ismailkocacan
  String üzerinden enum değeri çağırma Abdullah ILGAZ 7 1.574 19-09-2017, Saat: 13:36
Son Yorum: The_aLiEn
  Array of Const to String (Çözüldü) uparlayan 14 2.787 19-09-2017, Saat: 11:44
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi