Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Substrings vertauschen
Marco D. - Mi 12.07.06 20:05
Titel: Substrings vertauschen
Ich habe mir folgende Prozedur zum Vertauschen zweier Substrings in einem String geschrieben, da ich keine vorgefertigte dafür gefunden habe. Gibt es eine?
Naja hier der Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.SwapSubStrings(var s : string; index1, index2, count : integer); var temp:string; begin if (index1+count-1<=index2) and (index2<Length(s)) then begin temp:=Copy(s,index1,count); Delete(s,index1,count); Insert(Copy(s,index2-count,count),s,index1); Delete(s,index2,count); Insert(temp,s,index2); end; end; |
Die Parameter sind selbsterklärend oder muss man die erläutern?
Inwieweit kann man diese optimieren? Arbeitet sie fehlerhaft? Bei mir hat es funktioniert (aus 'blubb' macht sie 'bbubbl' und aus '12345678' macht sie '56781234').
Bitte um Feedback :-D
fidionael - Do 13.07.06 01:11
Hallo, soll gar nicht böse gemeint sein, aber ich habe jetzt schon ein wenig gegrübelt und mir ist beim besten Willen keine praktische Anwendung für deine Funktion eingefallen, hast du eine?
Und bei deinen Erläuterungen, was der Output eines versandten Strings ist solltest du vielleicht hinzufügen, welche Zahlen du für die weiteren Parameter eingesetzt hast; dann lässt sich dein Quelltext viel einfacher verstehen.
Mfg
crowley - Do 13.07.06 07:42
eine sinnvolle erweiterung wäre noch eine möglichkeit, unterschiedlich lange substr zu vertauschen... so dass du einen count für beide parameter übergibst..
eine überladene variante sollte vielleicht statt indizes die zu tauschenden substr als parameter bekommen...
Marco D. - Do 13.07.06 14:08
Also ich muss die Delphi-Farbcodes in Hexadezimal-Zahlen umwandeln und dafür Zeichen austauschen.
Ok, nehmen wir mal als Input 'blubb'. Dann ruft man die Procedure so auf:
Delphi-Quelltext
1: 2: 3: 4:
| var s:string; s:='blubb'; SwapString(s,1,4,2); showmessage(s); |
Das Ergebnis ist 'bbubl'.
GTA-Place - Fr 21.07.06 22:25
Delphi-Quelltext
1:
| Insert(temp,s,index2+1); |
Das + 1 muss weg, sonst haste einen Buchstaben zu viel am Ende.
Marco D. - Fr 21.07.06 22:29
Vertrau dir einfach mal, ohne das zu testen. Dachte eigentlich, der Thread sei tot. Funktioniert es ansonsten?
GTA-Place - Fr 21.07.06 22:31
Ich hab's ausgiebig getestet ^^ Bis jetzt geht's. Ich versuch grad zu optimieren.
Marco D. - Fr 21.07.06 22:51
Kannst dich ja denn melden, wenn du voran kommst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!