AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Stringreplace - Klassenbezeichnungen filtern
Thema durchsuchen
Ansicht
Themen-Optionen

Stringreplace - Klassenbezeichnungen filtern

Ein Thema von Svenkan · begonnen am 31. Jul 2007 · letzter Beitrag vom 1. Aug 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Stringreplace - Klassenbezeichnungen filtern

  Alt 31. Jul 2007, 22:04
Hey!
Und zwar:
Ich habe einen String, welcher vom bestimmten Eintrag betroffene Klassen beinhalten.
Zum Beispiel sind dies: R9a=R9b=R9c=R9d=
Nun möchte ich, dass über Stringreplace folgendes Ergebnis rauskommt: R9abcd
Sollte es sich bspw. um R8a=R8b=R9a=R9b=R9c= handeln, soll dann R8abR9abc rauskommen.
Wie ist die zu bewerkstelligen?
Bisher habe ich es leider nur geschafft, das = zu ersetzen:
klasse:=StringReplace(klasse,'=','',[rfReplaceAll, rfIgnoreCase]);
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Stringreplace - Klassenbezeichnungen filtern

  Alt 31. Jul 2007, 22:34
ganz angesehen vom sinn und zweck dieser vorgehensweise ist es mit einem stringreplace nicht getan.

man könnte den string parsen:
man beachte immer die aktuelle nummer (beispiel 8 oder 9 in deinem fall).
man schaut sich alle weiteren zeichen an: das R und die 8 löscht man raus, das = auch.
dann hat man für den string R8a=R8b=R9a=R9b=R9c=
schon einmal
R8ab
nun kommt die 9 und für die sowie für alle folgenden Zeichen gilt das selbe Spielchen.
du kannst hier mit Delete() oder Copy arbeiten oder nimmst dir nen zweiten string an den du das aktuelle Zeichen jeweils anhängst.
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Stringreplace - Klassenbezeichnungen filtern

  Alt 31. Jul 2007, 22:38
Zitat von computer-glossar.de:
man könnte den string parsen:
man beachte immer die aktuelle nummer (beispiel 8 oder 9 in deinem fall).
man schaut sich alle weiteren zeichen an: das R und die 8 löscht man raus, das = auch.
dann hat man für den string R8a=R8b=R9a=R9b=R9c=
schon einmal
R8ab
nun kommt die 9 und für die sowie für alle folgenden Zeichen gilt das selbe Spielchen.
du kannst hier mit Delete() oder Copy arbeiten oder nimmst dir nen zweiten string an den du das aktuelle Zeichen jeweils anhängst.
Danke schonmal, ich werde mir das morgen mal durchgehen.

Zitat von computer-glossar.de:
ganz angesehen vom sinn und zweck dieser vorgehensweise
Die Dateien sind so in der Datenbank gespeichert und damit die Schüler die Pläne dann auch ordentlich lösen können, sollen die Klassen so gruppiert werden.
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Stringreplace - Klassenbezeichnungen filtern

  Alt 31. Jul 2007, 22:42
du kannst auf jeden fall mit ner schleife arbeiten:

Delphi-Quellcode:
procedure WieDieAuchImmerHeissenMag();
var
  einZeichen: Char;
  i: Integer;
begin
  for i:=1 to length(deinString) do
  begin
    einZeichen := deinString[i];
    if einZeichen = 'Rthen
    ...
    else if ...
    ...
  end;
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Stringreplace - Klassenbezeichnungen filtern

  Alt 31. Jul 2007, 23:03
Hallo Sven,

wenn die Elemente immer durch das Zeichen '=' getrennt werden, und für den Test auf Gleichheit alle Zeichen bis auf das letzte herangezogen werden, dann könnte der folgende Code funktionieren:

Delphi-Quellcode:
function Compress (const s: string): string;
var
  Item, OldPrefix, NewPrefix: string;
  Index: Integer;
begin
  with TStringList.Create do
    try
      Delimiter := '=';
      DelimitedText := s;
      OldPrefix := '';
      Result := '';
      for Index := 0 to Count - 1 do
        begin
          Item := Strings[Index];
          NewPrefix := Copy(Item, 1, Length(Item) - 1);
          if SameText(OldPrefix, NewPrefix) then
            Result := Result + Copy(Item, Length(Item), 1)
          else
            begin
              Result := Result + Item;
              OldPrefix := NewPrefix;
            end;
        end;
    finally
      Free;
    end;
end;

procedure Test;
begin
  ShowMessage (Compress('R8a=R8b=R9a=R9b=R9c='));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Stringreplace - Klassenbezeichnungen filtern

  Alt 1. Aug 2007, 11:38
Hey! Damit hab ich jetz ehrlich gesagt nicht gerechnet!
Echt mega vielen Dank! Funktioniert prima!
Sven Kannenberg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz