Freigeben über


STREXTRACT( )-Funktion

Ruft eine Zeichenfolge zwischen zwei Trennzeichen ab.

STREXTRACT(cSearchExpression, cBeginDelim [, cEndDelim [, nOccurrence
[, nFlag]]]])

Parameter

  • cSearchExpression
    Gibt die zu suchende Zeichenfolge an.
  • cBeginDelim
    Gibt das Zeichen an, das den Anfang von cSearchExpression kennzeichnet.
  • cEndDelim
    Gibt das Zeichen an, das das Ende von cSearchExpression kennzeichnet.
  • nOccurrence
    Gibt an, bei welchem Auftreten von cBeginDelim in cSearchExpression die Extrahierung beginnen soll.
  • nFlag
    Gibt an, welche Bedingungen für die Suche gelten sollen. Die in nFlags angegebene Zahl liefert einen Bitwert, der die Optionen gemäß der folgenden Tabelle bestimmt:
    Bit Beschreibung
    1 Suche ohne Beachtung der Groß-/Kleinschreibung
    2 Trennzeichen am Ende ist nicht erforderlich. Gibt an, dass eine Suche, bei der kein Auftreten von cEndDelim gefunden wird, den Inhalt von cSearchExpression ab der Position von cBeginDelim zurückgibt.

Rückgabetypen

Zeichen

Hinweise

Die Standardeinstellung ist eine Suche mit Beachtung der Groß-/Kleinschreibung, bei der Trennzeichen gefunden werden müssen (kein Wert für nFlag).

Wenn es sich bei cBeginDelim um eine leere Zeichenfolge handelt, erfolgt die Suche ab dem Beginn von cSearchExpression bis zum ersten Auftreten von cEndDelim. Wenn es sich bei cBeginDelim um eine leere Zeichenfolge handelt, gibt STREXTRACT( ) eine Zeichenfolge ab nOccurrence von cBeginDelim bis zum Ende von cSearchExpression zurück.

Beispiel

clear
USE customer && any table
?cursortoxml(0,"x",1,0,2)   && Produce variable "x" that has XML of  first 2 records of table
?x         && show the XML
xmlproc(x,0)      && Parse the XML

PROCEDURE xmlproc(x as String, nLev as Integer)   as void
   LOCAL cTagName, cContents, mterm
   do while .t.
      cTagName = STREXTRACT(x,"<",">")
      IF LEN(cTagName) = 0   && no tag found
         ??' ',x   && print out raw string as contents
         exit
      endif
      IF RIGHT(cTagName,1) = '/'   && like "<region/>"
         cTagName = LEFT(cTagName, LEN(cTagName)-1)
         cContents=""
         mterm = "<"+cTagName+"/>"   && "<region/>"
      else
         mterm = "</"+cTagName+">"   && "</region>"
         cContents = STREXTRACT(x,"<"+cTagName+">", mterm,1,2)
      endif
      ?REPLICATE("  ",nLev),nLev+1,PADR(cTagName,20)
      xmlproc(cContents, nLev+1)
      x = STREXTRACT(x, mterm)   && get the rest of the xml
   enddo
      

Siehe auch

STRTRAN( )-Funktion | RAT( )-Funktion | RATC( )-Funktion | SUBSTR( )-Funktion | SUBSTRC( )-Funktion | LIKEC( )-Funktion