![]() |
Bis auf best. alle anderen Zeichen aus String 'rausfiltern
Ich möchte gerne in einem String Zeichen so filtern, dass nur noch buchstaben darin vorkommen, also alle nicht-Buchstaben entfernen. gibt es da vielleicht eine funktion, die das macht ???
|
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Iterier doch durch den String und kopiere die Buchstaben in einen neuen String rein. Eine schnellere Methode kenne ich leider nicht.
|
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Im moment gehe ich jedes zeichen im string durch und füge es ggf. in einen neuen string. (Meintest du das mit Iterieren ?)
Aber es muss doch irgendwie einfacher gehen ?! :? |
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Es geht bestimmt einfacher, aber ich wüsste keinen Weg.
BtW: Du hast den Begriff "Iterieren" komplett richtig erklärt. ;) |
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Du könntest es auch
![]() ![]() |
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Aber wenn du StringReplace nutzt um die unerwünschten Zeichen zu löschen, ist es langsamer als meine Methode.
|
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo jfheins,
ich denke, diese Funktion erfüllt auch deine Wünsche ...
Delphi-Quellcode:
bye
function DeleteUnknownChars(Str: string): string;
var I: Integer; begin for I := Length(Str) downto 1 do begin if not(Str[I] in ['a'..'z', 'A'..'Z']) then Delete(Str, I, 1); end; Result := Str; end; Claus |
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Ich glaube aber immer noch, das die Kopiermethode schneller ist, weil man bei dem löschen einzelner Zeichen ja den Rest vom String eins zurückgeschoben wird, und das braucht Zeit.
|
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Hallo Dax,
das mag wohl so sein, aber ich denke, daß es sich erst bei ein paar ... Strings bemerkbar macht. bye Claus |
Re: Bis auf best. alle anderen Zeichen aus String 'rausfilte
Hallo,
folgende Funktion hat Hagen mal im Entwickler Forum gepostet. Die Funktion ist die schnellste die ich kenne
Delphi-Quellcode:
Hier wird nur Delphi MemoryManager nur zweimal belästigt. Bei den o.g. Funktionen bei jedem Schleifendurchlauf.
function DeleteNonNumbers(const Value: String): String;
var I: Integer; P: PChar; begin SetLength(Result, Length(Value)); P := PChar(Result); for I := 1 to Length(value) do if Value[I] in ['0'..'9'] then begin P^ := Value[I]; Inc(P); end; SetLength(Result, P - PChar(Result)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 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