CR und LF herausfiltern

19. Januar 2015 15:19

Hallo Leute,

ich muss aus unserem Artikelstamm eine formatierte CSV-Datei generieren, welche bestimmte Felder enthält. Unter anderem auch die Artikelbeschreibung in 2 Sprachen (Einstellungen/Sprache-Artikelbeschreibung). Das ist ja am Ende die Tabelle InventTxt. Pro Artikel soll eine Zeile in der CSV-Datei mit den geforderten Feldern gefüllt werden. Das Ganze mache ich in einer while Schleife mit: strLfix(inventTxt::find(inventTable.ItemId,'de').Txt,100) plus einige weitere Felder.
Das funktioniert auch alles super, bis auf die CR und LF Zeichen. In der CSV-Datei kommt dann natürlich jedesmal eine neue Zeile, wenn in der Artikelbeschreibung Enter gedrückt worden ist. Wie kann ich dafür sorgen, dass wirklich nur eine Zeile pro Datensatz in die CSV-Datei geschrieben wird?

viele Grüße
Mike

Re: CR und LF herausfiltern

13. Februar 2015 10:49

Hallo,

normalerweise must du ALLE "Steurzeichen welche irgendwie Teil der CSV Struktur sind rausfiltern".

Potentielle Ax Kandidaten sind hier CRLF, LFCR, LF, CR, das Komma und die doppelten Anführungszeichen. Das Tab Zeichen würde ich aber auch ersetzen.

Hier ist ein Beispiel Job:

Code:
static void test(Args _args)
{
    str     src    = 'Hallo\r\n\n"Welt" wie\tgehts, gut?';
    str     dest;
    str 1   replwith = '.'; // or use space
    ;
    dest = strReplace( src,'\r\n',replwith);
    dest = strReplace(dest,'\n\r',replwith);
    dest = strReplace(dest,'\n'  ,replwith);
    dest = strReplace(dest,'\r',  replwith);
    dest = strReplace(dest,'\t',  replwith);
    dest = strReplace(dest,',' ,  replwith);
    dest = strReplace(dest,'"' ,  replwith);
    dest = strLFix(dest, 80, ' ');
    info(dest);
}


Freundliche Grüße

Douglas