Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Doppelte Buchstaben filtern (https://www.delphipraxis.net/153316-doppelte-buchstaben-filtern.html)

ScarFace01 28. Jul 2010 22:33

Doppelte Buchstaben filtern
 
Ich habe Probleme mit einem alten Programm von mir und bin nun dabei mir eine Erweiterung dafür zu basteln.

Das alte Tool ist sehr umfangreich und ich habe den Src dazu leider nicht mehr, kann also den Fehler dadrin nicht mehr beheben!

Egal!

Es geht auf jeden Fall dadrum, dass ich einen Text erhalte der decodiert bzw. generiert wird aber nen Fehler hat und mit so ziemlich alle Buchstaben/Ziffern doppelt ausgiebt. Dafür nun die Erweiterung die den Text filtern soll.

Hier mal ein Beispiel Text den ich erhalte:
Zitat:

HHaalllloo,, iicchh bbiinn eeiinn BBeeiissppiieell TTeexxtt!!
Gibt es eine relativ einfach Möglichkeit diesen text nun zu zu filtern, dass er wieder ein normaler Text wird?

Ich könnte ja einfach in einer Schleife anhand von pos() und stringreplace() nach den doppelten Buchstaben suchen und sie ersetzten aber was mache ich mit den doppelten, die doppelt bleiben sollen? wie in HHaalllloo(Hallo)? Gibt es eine Befehl in der Art wie strip() oder so der dafür funktionieren würde? Ich denke mal nicht. Aber ich hoffe, dass mich hier jemand auf ne Idee bringen kann und/oder sogar nen Beispiel oder Schnipsel Code für mich hat!

Danke im Vorraus!

XHelp 28. Jul 2010 22:51

AW: Doppelte Buchstaben filtern
 
Vllt sowas wie:
Delphi-Quellcode:
function parseDoubleLetters(s:string):string;
var
  i:integer;
begin
i:=1;
result:='';
while (i<=length(s)) do begin
  result:=result+s[i];
  if (s[i]=s[i+1]) then begin
    inc(i);
  end;
  inc(i);
end;
end;
Ansonsten lässt sich bestimmt auch irgendein schlauer RegEx bauen.

supermuckl 28. Jul 2010 23:12

AW: Doppelte Buchstaben filtern
 
kommt dir das über einen tastaturhook so rüber?

XHelp 28. Jul 2010 23:22

AW: Doppelte Buchstaben filtern
 
Du kannst den RegEx (.)\1 benutzen und durch die 1. Gruppe ersetzen.

bernau 28. Jul 2010 23:33

AW: Doppelte Buchstaben filtern
 
Die doppelten Buchstaben sind ja immer vorhanden.

Delphi-Quellcode:
for a:=1 to (length(quellstring) div 2) do
  result:=result+quellstring[a*2];
Einfach nur so runtergetippt.

angos 29. Jul 2010 07:58

AW: Doppelte Buchstaben filtern
 
Zitat:

Zitat von ScarFace01 (Beitrag 1038244)
[...] und mit so ziemlich alle Buchstaben/Ziffern doppelt ausgiebt.[...]

Gibt er nun immer jeden Buchstaben doppelt aus, oder nur in bestimmten Fällen. Wenn jeder Buchstabe doppelt ist, nimm die Lösung von bernau.

Anonsten hast du das Problem, dass du exakt wissen musst, wann die Buchstaben doppelt sind.

Die Funktion von XHelp filtert zwar alle doppelten Buchstaben raus, aber auch eben ein "p" aus doppelt oder ein "t" aus Mittag, was in dem Fall ja nicht gewünscht wäre.

Gruß
angos

XHelp 29. Jul 2010 14:53

AW: Doppelte Buchstaben filtern
 
Zitat:

Zitat von angos (Beitrag 1038282)
Die Funktion von XHelp filtert zwar alle doppelten Buchstaben raus, aber auch eben ein "p" aus doppelt oder ein "t" aus Mittag, was in dem Fall ja nicht gewünscht wäre.

Die Funktion von bernau macht aus doppelt>"dpet". Bedenke, dass du die Funktionen schon mit dem passendem Wort testen musst, wo auch die Buchstaben doppelt vorkommen. Meine Funktion macht aus ddooppppeelltt>doppelt. Du hast recht, wenn es "mal doppelt, mal nicht" ist, dann wird man nichts sinnvolles machen können.

ScarFace01 29. Jul 2010 22:22

AW: Doppelte Buchstaben filtern
 
Nein also es ist wirklich alles doppelt und auch immer! Habe mich da versehentlich falsch ausgedrückt! Es ist wirklich jedes Zeichen (sogar Space/Freizeichen) doppelt.

Ich werde das mal jetzt erst einmal mit der parseDoubleLetters() Funktion versuchen.

Was du mit "...RegEx (.)\1 benutzen und durch die 1. Gruppe ersetzen..." gemeint hast, verstehe ich leider nicht! Sry!

Aber vielen Dank für eure Ideen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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