AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de cadenas
  • Observación sobre la sintaxis "Buscar subcadenas entre dos separadores"
  • Función ExtractStringBetween y UNICODE
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Permite:
  • extraer una subcadena entre dos separadores de una cadena de caracteres.
  • buscar subcadenas entre dos separadores en una cadena de caracteres.
Esta función permite, por ejemplo, extraer datos entre dos etiquetas en HTML, XML o JSON.
Observaciones:
  • La búsqueda de subcadenas es más rápida que la extracción de subcadenas.
  • Se pueden utilizar arrays de separadores. Esto le permite utilizar varios pares de separadores al mismo tiempo.
Ejemplo
Country is string = [
<country>France</country><country>Italy</country>
<country>Germany</country><country>Spain</country>
]
ExtractStringBetween(Country, 1, "<country>", "</country>")   // Returns "France"
ExtractStringBetween(Country, 2, "<country>", "</country>")   // Returns "Italy"
ExtractStringBetween(Country, 3, "<country>", "</country>")   // Returns "Germany"
ExtractStringBetween(Country, 4, "<country>", "</country>")   // Returns "Spain"
ExtractStringBetween(Country, 5, "<country>", "</country>")   // Returns EOT
MyString is string = [
<red fruit>Strawberry</red fruit>
<red fruit>Raspberry</red fruit>
<exotic fruit>Cacao</exotic fruit>
<exotic fruit>Banana</exotic fruit>
]
ExtractStringBetween(MyString, 1, ["<red fruit>" , "<exotic fruit>"], ...
["</red fruit>" , "</exotic fruit>"]) // Returns "Strawberry"
ExtractStringBetween(MyString, 2, ["<red fruit>" , "<exotic fruit>"], ...
 ["</red fruit>" , "</exotic fruit>"]) // Returns "Raspberry"
ExtractStringBetween(MyString, 3, ["<red fruit>" , "<exotic fruit>"], ...
 ["</red fruit>" , "</exotic fruit>"]) // Returns "Cacao"
ExtractStringBetween(MyString, 4, ["<red fruit>" , "<exotic fruit>"], ...
 ["</red fruit>" , "</exotic fruit>"]) // Returns "Banana"
// Search for all the substrings
Country is string = [
<country>France</country><country>Italy</country>
<country>Germany</country><country>Spain</country>
]
SubString is string = ExtractStringBetween(Country, firstRank, "<country>", "</country>")
WHILE SubString <> EOT
Trace(SubString) // Returns "France", "Italy", "Germany", "Spain"
SubString = ExtractStringBetween(Country, nextRank, "<country>", "</country>")
END
// Search for all the substrings
// The separators are in arrays
sString is string = [
<red fruit>Strawberry</red fruit>
<red fruit>Raspberry</red fruit>
<exotic fruit>Cacao</exotic fruit>
<exotic fruit>Banana</exotic fruit>
]
sResult is string = ExtractStringBetween(sString, firstRank, ["<red fruit>" , ...
 "<exotic fruit>"], ["</red fruit>" , "</exotic fruit>"])
WHILE sResult <> EOT
Trace(sResult)
sResult = ExtractStringBetween(sString, nextRank, ["<red fruit>" , "<exotic fruit>"], ...
 ["</red fruit>" , "</exotic fruit>"])
END
Sintaxis

Extraer una subcadena entre dos separadores de una cadena de caracteres Ocultar los detalles

<Result> = ExtractStringBetween(<Initial string> , <Index> , <Start separator> [, <End separator> [, <Options>]])
<Result>: Cadena de caracteres
Corresponde a:
  • La subcadena entre <Separador de inicio> en <Índice> y <Separador de fin> si no se especifica la constante FromEnd.
  • La subcadena entre <Separador de inicio> en <Índice> desde el final de la cadena y el siguiente separador de fin si se especifica la constante FromEnd.
  • La constante EOT en uno de los siguientes casos:
    • si <Índice> es mayor que el número de separadores de inicio seguidos de separadores de fin en la cadena,
    • si todos los separadores son cadenas vacías ("").
<Initial string>: Cadena de caracteres
Cadena de caracteres (hasta 2 GB) que contiene la cadena a extraer.
<Index>: Entero
Posición del separador de inicio seguido de un separador de fin.
Observación: un separador de inicio no se tendrá en cuenta si no hay un separador de fin entre este y el separador de inicio anterior, excepto si se cumplan las siguientes condiciones:
  • el valor de <Índice> es 1,
  • no se especifica la opción FromEnd.
<Start separator>: Cadena o array de cadenas
Este parámetro puede corresponder a:
  • La cadena que permite delimitar el inicio de las subcadenas. Esta cadena no se incluye en el resultado.
  • Un array de cadenas. Las cadenas del array que permiten delimitar el inicio de las subcadenas. Los separadores no se incluyen en el resultado.
<End separator>: Cadena de caracteres opcional o array de cadenas opcional
Este parámetro puede corresponder a:
  • La cadena que permite delimitar el final de las subcadenas. Esta cadena no se incluye en el resultado.
  • Un array de cadenas. Las diferentes cadenas del array delimitan las subcadenas. Los separadores no se incluyen en el resultado.
Si no se especifica este parámetro, el separador de fin será idéntico al <Separador de inicio>.
<Options>: Constante opcional de tipo Integer
Dirección y características de la búsqueda:
FromBeginning
(Valor predeterminado)
Inicia la búsqueda del primer al último carácter de la cadena.
FromEndInicia la búsqueda del último al primer carácter de la cadena.
IgnoreCaseBusca sin distinguir entre mayúsculas, minúsculas o acentos.
Linux Esta constante no tiene ningún efecto.
WholeWordBusca una palabra completa (entre caracteres de puntuación o espacios).
Linux Esta constante no tiene ningún efecto.

Buscar subcadenas entre dos separadores en una cadena de caracteres Ocultar los detalles

<Result> = ExtractStringBetween(<Initial string> , <Search options> , <Start separator> [, <End separator> [, <Options>]])
<Result>: Cadena de caracteres
Corresponde a:
  • la siguiente o anterior subcadena dependiendo de la búsqueda especificada. <Resultado> no contiene separadores.
  • la constante EOT al final de la búsqueda.
<Initial string>: Cadena de caracteres
Cadena de caracteres (hasta 2 GB) que contiene la cadena a extraer.
<Search options>: Constante de tipo Integer
Dirección de búsqueda:
firstRankInicia la búsqueda de subcadenas separadas por los delimitadores especificados desde el inicio de la cadena.
lastRankInicia la búsqueda de subcadenas separadas por los delimitadores especificados desde el final de la cadena.
nextRankContinúa la búsqueda iniciada con la constante firstRank
previousRankContinúa la búsqueda iniciada con la constante lastRank
<Start separator>: Cadena o array de cadenas
Este parámetro puede corresponder a:
  • La cadena que permite delimitar el inicio de las subcadenas. Esta cadena no se incluye en el resultado.
  • Un array de cadenas. Las cadenas del array que permiten delimitar el inicio de las subcadenas. Los separadores no se incluyen en el resultado.
<End separator>: Cadena de caracteres opcional o array de cadenas opcional
Este parámetro puede corresponder a:
  • La cadena que permite delimitar el final de las subcadenas. Esta cadena no se incluye en el resultado.
  • Un array de cadenas. Las diferentes cadenas del array delimitan las subcadenas. Los separadores no se incluyen en el resultado.
Si no se especifica este parámetro, el separador de fin será idéntico al <Separador de inicio>.
<Options>: Constante opcional de tipo Integer
Características de la búsqueda:
IgnoreCaseBusca sin distinguir entre mayúsculas, minúsculas o acentos.
WholeWordBusca una palabra completa (entre caracteres de puntuación o espacios).

Linux Este parámetro no está disponible. La búsqueda distingue entre mayúsculas y minúsculas. La cadena buscada no corresponde necesariamente a una palabra completa: puede corresponder a una parte de la palabra.
Observaciones

Observación sobre la sintaxis "Buscar subcadenas entre dos separadores"

  • Este tipo de búsqueda solo se puede utilizar en cadenas constantes. Por lo tanto, se debe utilizar un elemento del proyecto (variable, control, campo, etc.) como cadena inicial.
  • Cuando se inicia una búsqueda con las constantes firstRank o lastRank, la información de la búsqueda se almacena en la memoria hasta que se hayan examinado todas las subcadenas. Se recomienda utilizar este tipo de búsqueda solo cuando se deben examinar todas las subcadenas.

Función ExtractStringBetween y UNICODE

Los parámetros <Cadena inicial>, <Separador de inicio> y <Separador de fin> pueden corresponder a:
  • cadenas ANSI.
  • cadenas UNICODE.
  • buffers.
Se pueden utilizar cadenas ANSI, cadenas Unicode y buffers en los diferentes parámetros de la función.
La siguiente regla de conversión se utiliza para sistemas Ansi (Windows o Linux):
  • Si al menos una de las cadenas es un buffer, todas las cadenas se convierten en buffers y la operación se realiza con buffers.
  • Si no se cumple la primera condición y hay al menos una cadena de caracteres Unicode, todas las cadenas se convierten en Unicode y la operación se realiza en Unicode (la conversión se realiza con el conjunto de caracteres actual, si es necesario).
  • De lo contrario, la operación se realiza en Ansi.
La regla de conversión utilizada para los sistemas Unicode es la siguiente:
  • Si al menos una de las cadenas es un buffer, todas las cadenas se convierten en buffers y la operación se realiza con buffers.
  • De lo contrario, la operación se realiza en Unicode.
Para obtener más información sobre UNICODE, consulte Gestión de UNICODE.
Recordatorio: Los parámetros de idioma se definen al llamar a la función ChangeCharset.
Componente: wd290vm.dll
Versión mínima requerida
  • Versión 25
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 09/09/2022

Señalar un error o enviar una sugerencia | Ayuda local