STREXTRACT( ) (Función)

Recupera una cadena existente entre dos delimitadores.

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

Parámetros

  • cSearchExpression
    Especifica la cadena que hay que buscar.
  • cBeginDelim
    Especifica el carácter que delimita el principio de cSearchExpression.
  • cEndDelim
    Especifica el carácter que delimita el final de cSearchExpression.
  • nOccurrence
    Especifica la instancia de cBeginDelim en cSearchExpression en la que se inicia la extracción.
  • nFlag
    Especifica el tipo de controles que se colocan en la búsqueda. El número especificado en nFlags proporciona un valor de bits que determina ciertas opciones de la manera indicada en la tabla siguiente:
    Bit Descripción
    1 No se distingue entre mayúsculas y minúsculas en la búsqueda
    2 No es necesario un delimitador final. Especifica que una búsqueda que no encuentra ninguna instancia de cEndDelim devolverá el contenido de cSearchExpression desde la ubicación cBeginDelim.

Devuelve

Character

Observaciones

De manera predeterminada, la búsqueda de los delimitadores distingue entre mayúsculas y minúsculas (no hay ningún valor de nFlag).

Si cBeginDelim es una cadena vacía, se realiza la búsqueda desde el principio de cSearchExpression hasta la primera instancia de cEndDelim. Si cEndDelim es una cadena vacía, STREXTRACT( ) devuelve una cadena desde la instancia nOccurrence de cBeginDelim hasta el final de cSearchExpression.

Ejemplo

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
      

Vea también

STRTRAN( ) (Función) | RAT( ) (Función) | RATC( ) (Función) | SUBSTR( ) (Función) | SUBSTRC( ) (Función) | LIKEC( ) (Función)