[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2006
    Beiträge
    24

    Reguläre Ausdrücke mit Replace: suche Beispiel

    Hallo zusammen,

    ich habe im ILE-RPG Umfeld noch nicht mit REGEX (z.B. C Routine regcomp, regexec, ...) gearbeitet. Ich möchte eigentlich ungültige Zeichen in einem String mit einem Leerzeichen ersetzen. Hat jemand ein Beispielprogramm ? Über GOOGLE bin ich nicht wirklich fündig geworden.
    Slawo

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Nun ja, da ist der %xlate(From:To:Var) eigentlich der schnellste Weg, da du ja Leerzeichen haben willst.

    Was auch genauso schnell ist, ist eine kleine eigene Schleife:

    d Pos 5I 0
    d Var 100
    for Pos = 1 to %size(Var)
    if %check('gültige Zeichen':%subst(Var:Pos:1)) > 0;
    %subst(Var:Pos:1)=*blank;
    endif;
    endfor;

    Den Overhead mit RegEx würde ich bei so einfachen Sachen lassen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2006
    Beiträge
    24
    Nun ja, so kann man das Problem jetzt auch lösen.

    Ich werde zukünftig auch öfteres mal über diese Problematik stolperen da würd es mich schon interessieren wie ich das mit RegEx machen könnte.
    Slawo

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Hier gibts einen längeren Beitrag dazu:
    http://newsolutions.de/forum-systemi...ighlight=regex

    Insbesonders ist auf die CCSID-Problematik zu achten.
    Der Rest steht eigentlich im C-Handbuch.
    Allerdings kann ich keine Replace-Funktion finden.
    Hierfür musst du ggf. die %Replace()-BuiltIn bzw. "%subst(Var:Pos:Size) = NewValue" verwenden, nach dem du einen Match (Position und Länge) gefunden hast.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Feb 2008
    Beiträge
    104
    es geht noch einfacher:

    definiere 2 Strings, einmal mit den zu ersetzenden Zeichen, einmal mit den Ersatzzeichen (in diesem Fall blanks) und nutze dann %xlate
    d low c 'zäöü'
    d trans c '

    dattest = %xlate(low:trans:dattest);


    es werden die in low definierten Zeichen in dattest durch die entsprechenden aus trans ersetzt.


    gruß

    kh

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Dabei ist das Problem bei Sonderzeichen mit abweichender CCSID zur Laufzeit nicht zu verachten.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    May 2009
    Beiträge
    52

    ..Regex für Arme

    eine Idee wäre da noch die SQL-Replace Funktion:

    Select Replace('abc', 'b' , 'bee') as erg from sysibm.sysdummy1;


    Das kann man relativ einfach verwursten. Ist wahrscheinlich nicht die Performanste Lösung aber sollte klappen.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    SQL-Funktionen lassen sich auch direkt ohne Cursor verwenden:

    exec sql set : MyVar = replace(...);
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Reguläre Ausdrücke prüfen - suche Beispielprogramm
    By willi77 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 25-10-10, 11:08
  2. Suche Software f. Instandhaltung
    By Dominik_Meyer in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 24-11-06, 07:06
  3. Beispiel für lokale Bilddatei im VisualAge RPG??
    By Winnilein in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 19-09-06, 08:31
  4. Suche IBM INFO-WINDOWS 3487.
    By takeoff/400 in forum NEWSboard Server & Hardware Markt
    Antworten: 2
    Letzter Beitrag: 31-07-06, 18:17
  5. Suche Platten 6717
    By Peet in forum NEWSboard Server & Hardware Markt
    Antworten: 2
    Letzter Beitrag: 02-05-06, 08:08

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •