Rechercher la position de la chaîne de caractères
FIND renvoie la position à laquelle la seconde chaîne de caractères d’entrée apparaît pour la première fois dans la première chaîne de caractères d’entrée. Le résultat est écrit dans la variable de sortie. Si la seconde chaîne de caractères n’apparaît pas dans la première chaîne de caractères d’entrée, la valeur ZÉRO est renvoyée.
Entrée
Chaîne de caractères d’entrée
Chaîne de caractères sensible à la casse recherchée dans la chaîne de caractères d’entrée
Sortie
Si la valeur > 0 : position à laquelle la chaîne de caractères est trouvée, 1 désignant la position du premier caractère
Si la valeur = 0 : chaine de caractères recherchée non trouvée
Si cette instruction est utilisée avec des chaînes de caractères en UTF-8, consultez les remarques concernant les chaînes de caractères en UTF-8 sous “STRING”.
Si les chaînes de caractères sont d’une longueur supérieure à celle définie pour les variables d’entrée (IN1 et IN2) dans la zone “Type”, une erreur apparaît (voir sys_bIsCarry pour le traitement des erreurs).
Si une chaîne de caractères en entrée ou sortie est invalide.
Si les chaînes de caractères d’entrée sont d’une longueur supérieure à celle définie pour les variables d’entrée dans la zone “Type”.
Si une chaîne de caractères en entrée ou sortie est invalide.
Si les chaînes de caractères d’entrée sont d’une longueur supérieure à celle définie pour les variables d’entrée dans la zone “Type”.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
sInputString: STRING[5]:='ABCBC';
(*sample string*)
sSearchString: STRING[2]:='BC';
(*searched string*)
iFoundPos: INT:=0;
(*1st position found*)
END_VAR
Dans cet exemple, les variables d’entrée sInputString et sSearchString ont été déclarées. Vous pouvez également entrer les chaînes de caractères ('ABCBC.' et 'BC') directement dans la fonction. Les chaînes de caractères doivent être entrées entre guillemets, à la fois dans l’en-tête du POU et dans la fonction.
sSearchString ('BC’) est recherchée dans sInputString ('ABCBC’). La position de la première occurrence (2) est écrite dans iFoundPos.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_VARIN,,sInputString,18,1,20,3,);
B(B_VARIN,,sSearchString,18,2,20,4,);
B(B_VAROUT,,iFoundPos,25,1,27,3,);
B(B_F,FIND!,,20,0,25,4,,?DIN1?DIN2?C);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
iFoundPos := FIND(sInputString, sSearchString);
LD |
sInputString |
FIND |
sSearchString |
ST |
iFoundPos |