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)