Seite 1 von 1
Alle nicht Ziffern entfernen...
Verfasst: 21.10.2008 20:59
von KeyKon
Wie kann ich am schnellsten alle nicht Ziffern aus einem String entfernen?
Jede NichtZiffer mit ReplaceString() zu entfernen dauert einfach zu lang...
Evtl. hat ja jemand hier sowas schon gemacht.
MFG KeyKon
Verfasst: 21.10.2008 21:07
von HeX0R
So in der Art:
Code: Alles auswählen
Procedure.s RemoveNonDigits(String.s)
Protected *C.CHARACTER = @String, Result.s
While *C\c
If *C\c >= '0' And *C\c <= '9'
Result + Chr(*C\c)
EndIf
*C + SizeOf(CHARACTER)
Wend
ProcedureReturn Result
EndProcedure
Debug RemoveNonDigits("td ztg1jfdiou2h iuiu3 j /)(/ 45 hljh6h 7l8 lkj j90")
Verfasst: 21.10.2008 21:19
von KeyKon
Perfekt THX

Verfasst: 21.10.2008 22:09
von AND51
Genau für Fälle wie diesen bieten sich
Reguläre Ausdrücke geradezu an.
Um zu zeigen wie es geht:
Code: Alles auswählen
Procedure.s RemoveNonDigits(String.s)
Protected exp=CreateRegularExpression(#PB_Any, "\D")
String=ReplaceRegularExpression(exp, String, "")
FreeRegularExpression(exp)
ProcedureReturn String
EndProcedure
Debug RemoveNonDigits("td ztg1jfdiou2h iuiu3 j /)(/ 45 hljh6h 7l8 lkj j90")
\D steht für "Nicht-Ziffern", diese werden entfernt. Übrig bleiben also nur Zahlen.
\D steht für alle Nicht-Ziffern, \d umgekehrt für alle Ziffern.
Verfasst: 21.10.2008 22:17
von ts-soft
Ich finde Tipps zu regulären Ausdrücken immer nett, will dies ja auch irgend-
wann mal verstehen, aber anbieten tun sie sich aber nicht unbedingt:
1. langsamer
2. bläht Exe auf
es sei denn man benötigt das noch wesentlich öfter im Programm

Verfasst: 22.10.2008 14:43
von AND51
Ja, da gebe ich dir Recht.
Ich habe gerade extra gestestet:
Bei 10.000 Durchläufen
- RegExp ca 3500 ms
Pointer 530 ms
Die EXE bläht es aber nicht wesentlich auf:
..................89 KB (RegExp)
..5 KB (Pointer)
Es wurde bereits vielfach diskutiert, dass ein Größenzuwachs von einigen KB nicht der Rede wert ist. ich beziehe mich hierbei auf zahlreiche Außerungen wie "im Zeitalter großer Festplatten", "riesiger Arbeitsspeicher" und "schneller DSL-Anschlüsse", die zu Hauf in Diskussionen zum Thema Dateigrößen in diesem Forum zu finden sind.