Ersetzungen

Thomas Berger ThB at gymel.com
Mo Jun 24 19:41:17 CEST 2002


Lieber Herr Kaun,

> Ich muss in einer DB leider einen Haufen Ersetzungen durchfuehren lassen,
> die insofern ein Problem sind, als dass sie nur an bestimmten Stellen,
> nicht aber in bestimmten Kategorien zu erfolgen hat.
> 
> Z.B. soll ein ü nur dann in !ue! ersetzt werden, wenn dahinter oder aber
> auch davor ein Codewert kleiner als Code 128 ist. Davor oder dahinter muss
> leider wirklich eine Pruefung sein: also wenn hinter ü ein Wert groesser
> Code 128 dann schaue nach vorne vor ü und wenn da ein Code kleiner als 128
> dann aendere. Sonst nicht. Und natuerlich nach Moeglichkeit auch umgekehrt.
> Das  Gleiche gilt dann fuer ö, ä, ô, â, ê, û n mit Tilde (Code 164). Und
> das alles in Klein- und Grosschreibung.
> Kann man da ueberhaupt etwas machen?


Moeglichkeit 1: Datenbank nach .ald exportieren (hinter dem \x01
fuer den Satzanfang und der ersten Kategorienummern muessen hierbei
4 Zeichen \x00 stehen) und mit Perl folgende Ersetzung darauf loslassen
und das Resultat das Resultat wieder zu einer Datenbank zusammenbauen:

s/(?<!\x00.{3}|.{3}[\x80-\xff])([äöüÄÖÜ])|([äöüÄÖÜ])(?=[\x0e-\x7f])/($x=$1?$1:$2,$x=~tr[äöüÄÖÜ][aouAOU],$x)."e"/eg;

(getestet, dreistelliges Kategorienschema unterstellt).

Sie koennen allerdings auch eine allegro-Parameterdatei mit globaler 
Manipulation drauf loslassen, das erspart Ihnen den Export und
die Reindexierung. Ein weiterer Vorteil ist, dass Sie nicht
die eklige Sonderbehandlungen fuer Umlaute als erstes Zeichen
einer Kategorie brauchen.

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro