[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    10

    String zeichen finden under ersetzten.

    Hallo,

    aufgrund einer prüfziffernberechnung, muss ich in einem String alle Buchstaben duch Nummern (10 bis 35, wobei A=10, B=11,... Z=35 ist) ersetzt werden.

    Da ich eigentlich nur C++ Programmiere, wollte ich mal fragen ob ihr für mich die passenden Funktionen hättet.

    Also einmal, zeichen auf stelle x prüfen
    (könnte ja man ja mit SubSt lösen)

    Dann wäre eine Funktion, zeichen an stelle x löschen ganz gut.

    Und zeichenkette an stelle x einfügen.

    weil ich in RPG keine 30 Stellen numerisch teilen kann, müsste ich später dann auch noch wissen, wie ich einen SubSt in ein Numerisches feld schiebe.

    Wenn ihr Quellen zum nachlesen habt, nehe ich diese auch gerne an.

    Danke,
    Gruß.

  2. #2
    Registriert seit
    Aug 2006
    Beiträge
    10
    Noch ein Nachtrag:

    Zu dem ersten Problem, dass ich aus dem 'A' eine '10' usw machen muss, könnte ich in c++ einfach den Ascii wert überprüfen und von diesen wert 55 abziehen. So käm ich dann bei 'A' z.b. auf die 10.

    Hier ein beispiel:

    Von i = 1, tue solange i < länge des Strings
    {
    wenn ( zeichen an position i > 'A' und zeichen an position i < 'Z')
    {
    //Dann ist es ein zeichen.
    einfügeZahl = (dez.Wert)zeichen an position i - 55;
    }
    sonst
    {
    einfügeZahl = zeichen an position i
    }
    }

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da die AS/400 in EBCDIC arbeitet, hast du da schlechte Karten. A-Z sind nicht lückenlos aufsteigend.

    Ich würde die Werte 0-9 und A-z in eine Tabelle stellen und dann per LOKUP jedes Zeichen in der Tabelle suchen.
    Der "Index - 1" ergibt dann den Wert für die Berechnung.
    Eine Ersetzung des Originalstrings würde ich nicht vornehmen.
    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

  4. #4
    Registriert seit
    Aug 2006
    Beiträge
    10
    ok, ist es mir denn möglich den String wie ein array zu behandeln. Hab eben durch zufall bei Wikipedia das hier gefunden.

    /FREE

    FOR k = 1 TO %elem(Array);
    Array(k) = k;
    ENDFOR;

    EVAL *INLR = *ON;

    /END-FREE

    Hatte mich schon gefreut, so wie in C einfach mit () hinter dem feldnamen die einzellnen zeichen ansprechen zu können. Dies mag der compiler aber nicht .

    Ich werds jetzt mit SubSt versuchen. Wenn ihr was einfacheres wisst, bitte her damit .

    Danke.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Hier werden verschiedene Sachen gemischt:

    %elem(Array) = Anzahl definierter Elemente eines Arrays.

    Um eine Zeichenkette anzusprechen gibts %SUBST(STRING:POS:LÄNGE).

    Um ein Zeichen in einem Array zu suchen nutze %LOKUP.
    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

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo kr1s!

    Probier' mal folgendes (ohne Gewähr):

    Code:
    D STRINGDS        DS                                                   
    D   STRING                      30A                                    
    D   BYTE                         1A   Dim(30) Overlay(STRING)          
    D   WERT                         3U 0 Dim(30) Overlay(STRING)          
    D NUM             S              3U 0 Inz                              
    D**********************************************************************
    D   BYTES         C                    'ABCDEFGHIJKLMNOPQRSTUVWXYZ'    
    D   WERTE         C                   X'0A0B0C0D0E0F101112131415161718-
    D                                     191A1B1C1D1E1F20212223'          
    D**********************************************************************
    C                   MOVEL     'QWERTZ'      STRING                     
    C     BYTES:WERTE   XLATE     STRING        STRING                     
    C                   MOVE      WERT(5)       NUM                        
    C                   SETON                                        LR
    Gruß
    Jürgen

Similar Threads

  1. String mit Returns in iSeries Datenfeld speichern
    By e_sichert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-11-06, 15:25
  2. Java, JDBC, iSeries und Tschechische/Russische/Chinesische Zeichen
    By Christian.Hesse in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-08-06, 10:04
  3. String zusammenstellen
    By edig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 07-07-06, 10:51
  4. Systemdatum nach String
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 03-07-06, 15:25
  5. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 07:45

Berechtigungen

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