PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE


Nouveauté WINDEV, WEBDEV, WINDEV Mobile 25 !
  • Remarque sur la syntaxe Parcours des sous-chaînes entre les séparateurs
  • Fonction ExtraitChaîneEntre et UNICODE
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
ExtraitChaîneEntre (Fonction)
En anglais : ExtractStringBetween
Permet de :
  • extraire d'une chaîne de caractères une sous-chaîne entre deux séparateurs de chaînes donnés.
  • effectuer un parcours de sous-chaînes entre deux séparateurs de chaîne donnés dans une chaîne de caractères.
Cette fonction permet par exemple d'extraire une donnée entre deux balises dans du HTML, du XML ou du JSON.
Remarques :
  • Le parcours de sous-chaînes est plus rapide que l'extraction de sous-chaînes.
  • Il est possible d'utiliser des tableaux de séparateurs. Il est ainsi possible d'utiliser plusieurs paires de séparateurs différents simultanément.
Exemple
Pays est une chaîne = [
<pays>France</pays><pays>Italie</pays>
<pays>Allemagne</pays><pays>Espagne</pays>
]
ExtraitChaîneEntre(Pays, 1, "<pays>", "</pays>")   // Renvoie "France"
ExtraitChaîneEntre(Pays, 2, "<pays>", "</pays>")   // Renvoie "Italie"
ExtraitChaîneEntre(Pays, 3, "<pays>", "</pays>")   // Renvoie "Allemagne"
ExtraitChaîneEntre(Pays, 4, "<pays>", "</pays>")   // Renvoie "Espagne"
ExtraitChaîneEntre(Pays, 5, "<pays>", "</pays>")   // Renvoie EOT
MaChaîne est une chaîne = [
<fruit rouge>Fraise</fruit rouge>
<fruit rouge>Framboise</fruit rouge>
<fruit exotique>Cacao</fruit exotique>
<fruit exotique>Banane</fruit exotique>
]
ExtraitChaîneEntre(MaChaîne, 1, ["<fruit rouge>" , "<fruit exotique>"], ...
["</fruit rouge>" , "</fruit exotique>"]) // Renvoie "Fraise"
ExtraitChaîneEntre(MaChaîne, 2, ["<fruit rouge>" , "<fruit exotique>"], ...
 ["</fruit rouge>" , "</fruit exotique>"]) // Renvoie "Framboise"
ExtraitChaîneEntre(MaChaîne, 3, ["<fruit rouge>" , "<fruit exotique>"], ...
 ["</fruit rouge>" , "</fruit exotique>"]) // Renvoie "Cacao"
ExtraitChaîneEntre(MaChaîne, 4, ["<fruit rouge>" , "<fruit exotique>"], ...
 ["</fruit rouge>" , "</fruit exotique>"]) // Renvoie "Banane"
// Parcours de toutes les sous-chaînes
Pays est une chaîne = [
<pays>France</pays><pays>Italie</pays>
<pays>Allemagne</pays><pays>Espagne</pays>
]
SousChaîne est une chaîne = ExtraitChaîneEntre(Pays, rangPremier, "<pays>", "</pays>")
TANTQUE SousChaîne <> EOT
Trace(SousChaîne) // Renvoie "France", "Italie", "Allemagne", "Espagne"
SousChaîne = ExtraitChaîneEntre(Pays, rangSuivant, "<pays>", "</pays>")
FIN
// Parcours de toutes les sous-chaînes
// Les séparateurs sont présents dans des tableaux
sChaîne est une chaîne = [
<fruit rouge>Fraise</fruit rouge>
<fruit rouge>Framboise</fruit rouge>
<fruit exotique>Cacao</fruit exotique>
<fruit exotique>Banane</fruit exotique>
]
sRésultat est une chaîne = ExtraitChaîneEntre(sChaîne, rangPremier, ["<fruit rouge>" , ...
 "<fruit exotique>"], ["</fruit rouge>" , "</fruit exotique>"])
TANTQUE sRésultat <> EOT
Trace(sRésultat)
sRésultat = ExtraitChaîneEntre(sChaîne, rangSuivant, ["<fruit rouge>" , "<fruit exotique>"], ...
 ["</fruit rouge>" , "</fruit exotique>"])
FIN
Syntaxe

Extraire une sous-chaîne d'une chaîne de caractères entre deux séparateurs de chaînes donnés Masquer les détails

<Résultat> = ExtraitChaîneEntre(<Chaîne initiale> , <Rang> , <Séparateur de début> [, <Séparateur de fin> [, <Options>]])
<Résultat> : Chaîne de caractères
Correspond à :
  • La sous-chaîne comprise entre <Séparateur de début> de rang <Rang> et <Séparateur de fin> suivant si la constante DepuisFin n'est pas précisée.
  • La sous-chaîne comprise entre <Séparateur de début> de rang <Rang> à partir de la fin de la chaîne et le séparateur de fin suivant si la constante DepuisFin est précisée.
  • La constante EOT dans un des cas suivants :
    • si <Rang> est plus grand que le nombre de séparateurs de début suivis d'un séparateur de fin contenus dans la chaîne,
    • si tous les séparateurs sont des chaînes vides ("").
<Chaîne initiale> : Chaîne de caractères (avec guillemets)
Chaîne de caractères (taille maximale 2 Go) contenant la chaîne à extraire.
<Rang> : Entier
Numéro d'ordre du séparateur de début suivi d'un séparateur de fin.
Remarque : un séparateur de début n'est pas pris en compte s'il n'y a pas un séparateur de fin entre lui et le séparateur de début précédent, sauf si les conditions suivantes sont réunies :
  • <Rang> vaut 1,
  • l'option DepuisFin n'est pas précisée.
<Séparateur de début> : Chaîne de caractères (avec guillemets) ou Tableau de chaînes
Ce paramètre peut correspondre à :
  • La chaîne permettant de délimiter le début des sous-chaînes. Cette chaîne n'est pas incluse dans le résultat.
  • Un tableau de chaînes. Les différentes chaînes présentes dans le tableau permettent de délimiter le début des sous-chaînes. Les séparateurs ne sont pas inclus dans le résultat.
<Séparateur de fin> : Chaîne de caractères (avec guillemets) optionnelle ou Tableau de chaînes optionnel
Ce paramètre peut correspondre à :
  • La chaîne permettant de délimiter la fin des sous-chaînes. Cette chaîne n'est pas incluse dans le résultat.
  • Un tableau de chaînes. Les différentes chaînes présentes dans le tableau permettent de délimiter les sous-chaînes. Les séparateurs ne sont pas inclus dans le résultat.
Si ce paramètre n'est pas précisé, le séparateur de fin sera identique au <Séparateur de début>.
<Options> : Constante optionnelle de type Entier
Sens de parcours et caractéristiques de la recherche :
DepuisDébut
(Valeur par défaut)
Recherche effectuée du premier caractère de la chaîne vers le dernier.
DepuisFinRecherche effectuée du dernier caractère de la chaîne vers le premier.
MotCompletRecherche un mot complet (entouré par des caractères de ponctuation ou des espaces).
Linux Cette constante n'a aucun effet.
SansCasseRecherche sans tenir compte de la casse (différences majuscules / minuscules) ou des accents.
Linux Cette constante n'a aucun effet.

Effectuer un parcours de sous-chaînes entre deux séparateurs de chaînes donnés dans une chaîne de caractères Masquer les détails

<Résultat> = ExtraitChaîneEntre(<Chaîne initiale> , <Options de parcours> , <Séparateur de début> [, <Séparateur de fin> [, <Options>]])
<Résultat> : Chaîne de caractères
Correspond à :
  • la sous-chaîne suivante ou précédente selon le parcours choisi. <Résultat> ne contient pas de séparateur.
  • la constante EOT en fin de parcours.
<Chaîne initiale> : Chaîne de caractères (avec guillemets)
Chaîne de caractères (taille maximale 2 Go) contenant la chaîne à extraire.
<Options de parcours> : Constante de type Entier
Sens du parcours de la recherche :
rangDernierDébute un parcours des sous-chaînes séparées par les séparateurs spécifiés en partant de la fin de la chaîne.
rangPrécédentContinue un parcours amorcé par la constante rangDernier
rangPremierDébute un parcours des sous-chaînes séparées par les séparateurs spécifiés en partant du début de la chaîne.
rangSuivantContinue un parcours amorcé par la constante rangPremier
<Séparateur de début> : Chaîne de caractères (avec guillemets) ou Tableau de chaînes
Ce paramètre peut correspondre à :
  • La chaîne permettant de délimiter le début des sous-chaînes. Cette chaîne n'est pas incluse dans le résultat.
  • Un tableau de chaînes. Les différentes chaînes présentes dans le tableau permettent de délimiter le début des sous-chaînes. Les séparateurs ne sont pas inclus dans le résultat.
<Séparateur de fin> : Chaîne de caractères (avec guillemets) optionnelle ou Tableau de chaînes optionnel
Ce paramètre peut correspondre à :
  • La chaîne permettant de délimiter la fin des sous-chaînes. Cette chaîne n'est pas incluse dans le résultat.
  • Un tableau de chaînes. Les différentes chaînes présentes dans le tableau permettent de délimiter les sous-chaînes. Les séparateurs ne sont pas inclus dans le résultat.
Si ce paramètre n'est pas précisé, le séparateur de fin sera identique au <Séparateur de début>.
<Options> : Constante optionnelle de type Entier
Caractéristiques de la recherche :
MotCompletRecherche un mot complet (entouré par des caractères de ponctuation ou des espaces).
SansCasseRecherche sans tenir compte de la casse (différences majuscules / minuscules) ou des accents.
Linux Ce paramètre n'est pas disponible. La recherche est sensible à la casse. La chaîne à rechercher ne correspond pas obligatoirement à un mot complet : cette chaîne peut correspondre à une partie d'un mot.
Remarques

Remarque sur la syntaxe Parcours des sous-chaînes entre les séparateurs

  • Ce type de parcours fonctionne uniquement sur des chaînes constantes. Il faut donc forcément utiliser un élément du projet (variable, champ, rubrique, ...) comme chaîne initiale.
  • Lorsqu'un parcours est amorcé avec les constantes rangPremier ou rangDernier, les informations de parcours sont conservées en mémoire tant que les sous-chaînes extraites n'ont pas toutes été parcourues. Il est donc conseillé d'utiliser ce type de parcours uniquement lorsque la totalité des sous-chaînes doit être traitée.

Fonction ExtraitChaîneEntre et UNICODE

Les paramètres <Chaîne initiale>, <Séparateur de début> et <Séparateur de fin> peuvent correspondre :
  • soit à des chaînes ANSI.
  • soit à des chaînes UNICODE.
  • soit à des buffers.
Il est possible d'utiliser des chaînes ANSI, Unicode et des buffers dans les différents paramètres de la fonction.
La règle de conversion utilisée est la suivante pour les systèmes Ansi (Windows ou Linux) :
  • Si l'une au moins des chaînes est un buffer, toutes les chaînes sont converties en buffer, et l'opération est réalisée avec des buffers,
  • sinon, si l'une au moins des chaînes est Unicode, toutes les chaînes sont converties en Unicode et l'opération est réalisée en Unicode,
  • sinon l'opération est réalisée en Ansi.
La règle de conversion utilisée est la suivante pour les systèmes Unicode (Windows CE) :
  • Si l'une au moins des chaînes est un buffer, toutes les chaînes sont converties en buffer, et l'opération est réalisée avec des buffers,
  • sinon l'opération est réalisée en Unicode.
Remarque : Si le résultat sur une chaîne ANSI est affecté à une chaîne UNICODE (et inversement), la conversion sera implicitement réalisée.
Pour plus de détails, consultez Gestion de l'UNICODE.
Composante : wd250vm.dll
Version minimum requise
  • Version 25
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire