AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichen in String ersetzen

Ein Thema von JanWe · begonnen am 19. Dez 2016 · letzter Beitrag vom 20. Dez 2016
Antwort Antwort
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 07:38
Ich würde da auch auf jeden Fall über eine Zeichenersetzungs-procedure gehen und da alle möglichen Fälle abarbeiten. Ist doch viel übersichtlicher.

Falls es in D5 noch kein ReplaceStr, AnsiReplaceText, StringReplace oder dergleichen gab, schreib dir einfach eine eigene. z.B.

Delphi-Quellcode:
function ReplaceString(StrOri, SuchStr, Repl:String):String;
var posi:integer;
begin
  posi:=pos(SuchStr, StrOri);
  while posi > 0 do begin
    StrOri:=copy(StrOri,1,posi-1)+ repl +
            copy(StrOri, posi+length(SuchStr), length(StrOri)-posi-length(SuchStr)+1);
    posi:=pos(SuchStr, StrOri);
  end;
  result:=StrOri;
end;
Und dann wie bereits vorgeschlagen:

Delphi-Quellcode:
s := '0,,25,01640X0174,01747,23,,,,47X014747';
s := ReplaceString(s,'X01',' Typ A: ');
s := ReplaceString(s,'01',' Typ B: ');
while Pos(',,',s) > 0 do begin
  s := ReplaceString(s, ',,', ',');
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 07:46
Nach meiner Kenntnis gibt es in Delphi 5 sehr wohl die StringReplace-Funktion.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 08:45
Du läufst den kompletten String Zeichen für Zeichen durch und merkst Dir die Chars, an denen Du vorbeikommst.
Deine längste "Kennung" ist drei Zeichen lang (X01). Also brauchst Du nur drei Char-Variablen, die Du in dieser Schleife füllst/schiebst und prüfst, ob eine der Kennungen vorkommt. Die korrekten Zeichen und die korrigierten/ersetzten Zeichen schreibst Du in einen neuen (Ergebnis-)String.
Oder Du schaust Dir mal an, wie ein Parser arbeitet
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#4

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 09:15
Nach meiner Kenntnis gibt es in Delphi 5 sehr wohl die StringReplace-Funktion.
Die gibt es aber nicht ContainStr und ReplaceStr.

Leider stoße ich auch immer wieder auf so etwas. Gibt es eine Übersicht, ab wann welche Funktion in Delphi verfügbar ist. Auf den Emba-Seiten steht die Version so weit ich weiß nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 10:20
Was lernen wir daraus? Backup und nie mit den original Daten arbeiten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 11:01
Falls es in D5 noch kein ReplaceStr, AnsiReplaceText, StringReplace oder dergleichen gab, schreib dir einfach eine eigene.

Oder such nach FastCode, da solltest Du auch das eine oder andere finden.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#7

AW: Zeichen in String ersetzen

  Alt 20. Dez 2016, 19:27
Falls es in D5 noch kein ReplaceStr, AnsiReplaceText, StringReplace oder dergleichen gab, schreib dir einfach eine eigene.

Oder such nach FastCode, da solltest Du auch das eine oder andere finden.

Gruß
K-H
Oder das hier. Benutze ich schon seit Jahren und hatte noch nie Probleme.
Delphi-Quellcode:
function StringReplaceEx(const aString, FromStr, ToStr: string; bCaseSensitive: Boolean = False): string;
var
 i: Integer;
 aStringA, aFromStrA, aToStrA: string;
begin
 aStringA := aString;
 aFromStrA := FromStr;
 aToStrA := ToStr;

 if FromStr = aStringA then
  begin
   Result := aStringA;
   Exit;
  end;

 Result := '';

 if not bCaseSensitive then
  i := Pos(UpperCase(aFromStrA), AnsiUpperCase(aStringA))
 else
  i := Pos(aFromStrA, aStringA);

 while i > 0 do
  begin
   if i > 1 then
    Result := Result + Copy(aStringA, 1, i - 1);

   Result := Result + aToStrA;

   Delete(aStringA, 1, i + Length(aFromStrA) - 1);

   if not bCaseSensitive then
    i := Pos(UpperCase(aFromStrA), AnsiUpperCase(aStringA))
   else
    i := Pos(aFromStrA, aStringA);
  end;

 Result := Result + aStringA;

// Aufruf z.B. in einem Button
showmessage( StringReplaceEx('C++ ist toll', 'C++', 'Delphi') );
  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 04:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz