Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - mehrere Leerzeichen zu 1 Leerzeichen
michaelarban - Mo 26.07.10 10:50
Titel: mehrere Leerzeichen zu 1 Leerzeichen
Hallo,
gibt es es eine Deplhi-Funtkion mit der man mehrere Leerzeichen zu 1 Leerzeichen zusammenfassen kann;
Bsp:
Quelltext
1:
| meineStringVariable := 'das ist ein Satz mit leerzeicen'; |
-->Ergebnis soll sein
Quelltext
1:
| meineStringVariable := 'das ist ein Satz mit leerzeicen'; |
danke
Gausi - Mo 26.07.10 10:54
Wenn der Text nicht zu lang ist, und es auf Geschwindigkeit nicht ankommt, kann man das Quick&Dirty so machen
Delphi-Quelltext
1: 2:
| while pos(' ', myString) > 0 do myString := Stringreplace(myString, ' ', ' ', [rfReplaceAll]); |
Bei den Parametern bitte vorher kontrollieren, ob die so richtig sortiert sind, sonst hat man eine Endlosschleife und/oder schreibt sich den Speicher komplett voll. ;-)
Ansonsten erkläre ich hiermit die Optimierungs-Spiele für eröffnet. :D
kalmi01 - Mo 26.07.10 11:21
Hi,
mein Favorit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| s:= myString; t := ''; while Length(s) > Length(t) do begin t := s; s := Stringreplace(s, ' ', ' ', [rfReplaceAll]); end; |
Längenvergleich sollte schneller gehen als Stringsuche.
Nersgatt - Mo 26.07.10 11:38
Gefühlsmäßig dürfte das ständige Neuzuweisen nicht gerade performant sein. Ich bin zwar auf dem Gebiet nicht wirklich gut, weil ich selten Sachen mache, wo es so auf Geschwindigkeit ankommt. Aber ich stell mal meinen Vorschlag zur Diskussion:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var s : String; sNeu : string; i, j : integer; begin
s := 'das ist ein Satz mit leerzeicen'; setLength(sNeu, Length(s)); j := 1; for I := 1 to length(s) do begin if s[i] = ' ' then begin if (i = 1) or (s[i - 1] <> ' ') then begin sNeu[j] := s[i]; inc(j); end; end else begin sNeu[j] := s[i]; inc(j); end; end; setLength(sNeu, j - 1); ShowMessage(s + #13#10 + sNeu);
end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!