AGB  ·  Datenschutz  ·  Impressum  







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

StringReplace mehrfach

Ein Thema von EarthQuaker · begonnen am 27. Mär 2012 · letzter Beitrag vom 27. Mär 2012
Antwort Antwort
Seite 1 von 2  1 2      
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#1

StringReplace mehrfach

  Alt 27. Mär 2012, 13:08
Liebe User,

habe nochmal eine frage an euch, welches diesmal ein StringReplace betrifft oder um es genau zu sagen ein MultiStringReplace. Dazu folgendes Problem.

Ich möchte wie bereits gesagt ein StringReplace machen worin dies ersetzt werden soll

(?<=^|[[:punct:][:space:]])1mal(?=[[:punct:][:space:]]|$)

d.h. es muss "(?<=^|[[:punct:][:space:]])" vor dem "1mal" und "(?=[[:punct:][:space:]]|$)" nach dem "1mal" durch z.b. ein "+" ersetzt werden.

Dazu mein Ansatz:

Code:
List.DelimitedText := StringReplace(Quelle[i], ' ', #255, [rfReplaceAll]);
wie kann ich dies nun Realisieren?


Mit freundlichen Grüßen
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#2

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:12
Erkläre deinen Ansatz doch mal
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:13
Redest du nun eigentlich regulären Ausdrücken? Wenn ja, dann geht das mit Delphi 7 und StringReplace nicht. Du brauchst entsprechende Klassen dafür.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:14
Mit StringReplace wirst Du beide Patterns einzeln ersetzen müssen.
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 s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:20
Mit StringReplace wirst Du beide Patterns einzeln ersetzen müssen.
Achso... es geht wahrlich um ein normales StringReplace... Nun ja, kapsel die Methode doch?!

PS: In dieser Unit ist glaub das was du haben willst. Zudem ist diese schneller als StringReplace, soweit ich das noch weiß.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:38
Hallo, danke erstmal für eure Antworten,

derzeit habe ich mit

Code:
MWKStringReplace.StringReplace(Quelle[i], '(?<=^|[[:punct:][:space:]])', '', [rfReplaceAll]);
den Anfang entfernen können, jedoch fehlt jetzt der Rest


MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:42
Und wo ist jetzt das Problem? Das gleiche nochmal mit dem anderen String, das kann doch nicht so schwer sein.
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
EarthQuaker

Registriert seit: 14. Apr 2007
Ort: Pirna
50 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:45
HeHe


Also:


Code:
List.DelimitedText := MWKStringReplace.StringReplace(Quelle[i], '(?<=^|[[:punct:][:space:]])', '', [rfReplaceAll]);
List.DelimitedText := MWKStringReplace.StringReplace(Quelle[i], '(?=[[:punct:][:space:]]|$)', '', [rfReplaceAll]);
            if List.Count > 0 then
              Ziel1.Add(StringReplace(List[0], #255, ' ', [rfReplaceAll]));
            if List.Count > 1 then
Klappt schonmal nicht... da nimmt er nur des Letztere das ist das Doofe



MfG
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#9

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:53
List.DelimitedText := MWKStringReplace.StringReplace(MWKStringReplace.StringReplace(Quelle[i], '(?<=^|[[:punct:][:space:]])', '', [rfReplaceAll]), '(?=[[:punct:][:space:]]|$)', '', [rfReplaceAll]);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: StringReplace mehrfach

  Alt 27. Mär 2012, 13:54
Natürlich, weil DelimitedText den kompletten Text ersetzt. Du brauchst eine Zwischenvariable, wenn das einigermaßen lesbar bleiben soll.
Delphi-Quellcode:
s := StringReplace(s, ...);
s := StringReplace(s, ...);
List.DelimitedText := s;
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
Antwort Antwort
Seite 1 von 2  1 2      


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 01:33 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