Domino 9 und frühere Versionen > Entwicklung
ein "Zipper" für Texte..und entzippen?
(1/1)
Rob Green:
hab mal was ganz einfaches gebaut (auf Basis eines Postings wegen Überlänge eines Suchstring bei db.search)...
Man nehme ein Feld_1 befüllt mit normalen Text.
Dann strippe man alle a-e-i-o-u´s weg.
Die Ersparnis ist ca. 30% je länger der Text.
Je kürzer umso kleiner wird die Ersparnis (klaro, bei deutschen Texten, eigentlich bei allen lateinisch beeinflussten Sprachen).
Das Ergebnis habe ich in Feld_3 geschrieben.
Und in Feld_4 die Textlänge vorher und nachher.
_zeichen:=Feld_1;
_zeichenlaenge:=@Length(Feld_1);
_za:=@Trim(@ReplaceSubstring(_zeichen;"a";""));
_ze:=@Trim(@ReplaceSubstring(_zeichen;"e";""));
_zi:=@Trim(@ReplaceSubstring(_zeichen;"i";""));
_zo:=@Trim(@ReplaceSubstring(_zeichen;"o";""));
_zu:=@Trim(@ReplaceSubstring(_zeichen;"u";""));
_zaDiff:=@Text(_zeichenlaenge - @Length(_za))+"a";
_zeDiff:=@Text(_zeichenlaenge - @Length(_ze))+"e";
_ziDiff:=@Text(_zeichenlaenge - @Length(_zi))+"i";
_zoDiff:=@Text(_zeichenlaenge - @Length(_zo))+"o";
_zuDiff:=@Text(_zeichenlaenge - @Length(_zu))+"u";
_zuDiffAll:=_zaDiff+_zeDiff+_ziDiff+_zoDiff+_zuDiff;
_zeichenneu:=@Trim(@ReplaceSubstring(_zeichen;"a":"e":"i":"o":"u";""));
_ende:=_zeichenneu + _zuDiffAll;
FIELD Feld_3:=_ende;
FIELD Feld_4:="Länge vorher: " + @Text(_zeichenlaenge) + " - Länge nachher: " + @Text(@Length(_ende));
_void
aus
"Mami, ich will nicht zum Zahnarzrt"
wird
"Mm, ch wll ncht zm Zhnrzt3a0e4i0o1u"
Wie könnte man nun die Vokale aber wieder einfügen, also wieder "entzippen"?
Die Idee wäre ein stinknormaler Platzhalter..klaro, daß die Platzerspranis dann nullinger ist (eine 1 gegen ein A ...), aber für nen Test bzw. die Theorie reicht das erstmal, ein Verfahren zu haben. Später kann man immer noch schauen, daß man echte Platzersparnisverfahren wählt .
Weiß jemand, wie ein echter Zipper arbeitet?
Rob Green:
hab was im I-Net zum Huffman Kodierungsverfahren, eine ganz simple Erklärung...Aussage:
"Beim Huffman-Verfahren werden häufig vorkommende Zeichen mit wenigen Bits, selten vorkommende Zeichen dafür mit mehr Bits codiert. Dies spart offenkundig Volumen gegenüber der ASCII-Codierung."
http://www.dbg.rt.bw.schule.de/lehrer/ritters/info/kompr/huffman.htm#inhalt
Performance:
stimmt - der Huffman Algorithmus ist am verbreitesten, aber die adaptive Huffman Methode hat sich durchgesetzt
- eine einfache Codierung ist die LRE - Lauflängencodierung
- daneben gibt es noch das LZW Verfahren oder auch BWT Algorithmus
- für den Packer (von unix .tar) wird der LZW Algorithmus verwendet
cu
Rob Green:
danke für die Stichwörter (äh..Fremdwörter ;D), werde mich mal auf die Suche bei Google machen..
*wenn jetzt jemand nach dem Grund fragt...kA...reine Neugier*
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln