Einzelnen Beitrag anzeigen

Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#11

AW: Buchstaben Kette in Klammern erkennen

  Alt 31. Jan 2019, 14:19
Hier funktioniert nur das if (NUMBER_C SIMILAR TO '(') nicht. Es kommt ein Fehler "Invalid SIMILAR TO pattern".

Ziemlich verzweifelnd.
bei den anderen Ifs schreibst Du if (:NUMBER_C SIMILAR TO Fehlt da nur ein Doppelpunkt?
Ob oder ohne spielt in diesem Fall leider keine Rolle.



Code:
    IN_NUMBERS = REPLACE(:IN_NUMBERS,'(','°');
    IN_NUMBERS = REPLACE(:IN_NUMBERS,')','`');

    I=0;
    NUMBER_C = NULL;
    NUMBERS = NULL;
    while (:I<CHAR_LENGTH(:IN_NUMBERS)) do
    begin
      I= :I+1;
      NUMBER_C = SUBSTRING(:IN_NUMBERS FROM :I FOR 1);

      --EXCEPTION EXCEPT_LEER NUMBER_C;
      if (:NUMBER_C SIMILAR TO '°') then
      begin
        NUMBERS = :NUMBER_C; -- ( auslesen
        I=:I+1;
        --EXCEPTION EXCEPT_LEER NUMBERS;
        while (:I<CHAR_LENGTH(:IN_NUMBERS)) do
        begin
          NUMBER_C = SUBSTRING(:IN_NUMBERS FROM :I FOR 1);

          IF (:NUMBER_C SIMILAR TO '[[:ALPHA:]]') THEN
          begin
            NUMBERS = NUMBERS || :NUMBER_C; -- Nach der ( Buchstabeninhalt auslesen
          end
          else IF (:NUMBER_C SIMILAR TO '`') THEN
          begin
              NUMBERS = NUMBERS || :NUMBER_C; -- ) auslesen
              IN_NUMBERS = REPLACE(:IN_NUMBERS,NUMBERS,NUMBERS||'^'); -- zur Trennung ^ setzen
              break;
          end

        I=:I+1;
        end
      end
    end
Ich hab die Klammern einfach mit anderen Zeichen replaced. Jetzt funktioniert es zumindestens schon einmal zur Hälfte, die 1. Buchstabenfolge wird ein ^ angehangen. Die 2. Wird leider nicht gefunden. Wie verhält sich den ein Break in 2 While's mit einer If ab frage?

Code:
while (x)
begin
   while (y)
   begin
    if (z) then break;
   end
end
Spring ich aus beiden heraus? oder nur aus der while y ?
  Mit Zitat antworten Zitat