Buscar una posición en una cadena de caracteres
FIND devuelve la posición de la cadena en la primera entrada, en la que se encuentra la cadena de la segunda entrada. El resultado se guarda en la variable de salida. Si no se encuentra la segunda cadena, el resultado será CERO.
Entrada
Cadena de entrada
Cadena que distingue entre mayúsculas y minúsculas y que se busca en la cadena de entrada
Salida
si el valor > 0: posición en la que se encuentra la cadena buscada, donde 1 hace referencia al primer carácter
si el valor = 0: cadena de búsqueda no encontrada
Si esta instrucción se utiliza con caracteres UTF-8, consultar las notas relativas a los caracteres UTF-8 en el tipo de datos STRING.
Si las cadenas son más largas que la longitud definida para las variables de entrada (IN1 y IN2) en el campo “Tipo”, se genera un error (para corregir el error, consultar sys_bIsCarry).
si una cadena aplicada en la entrada o la salida es una cadena no válida.
si las cadenas de entrada son más largas que la longitud definida para las variables de entrada en el campo “Tipo”.
si una cadena aplicada en la entrada o la salida es una cadena no válida.
si las cadenas de entrada son más largas que la longitud definida para las variables de entrada en el campo “Tipo”.
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
sInputString: STRING[5]:='ABCBC';
(*sample string*)
sSearchString: STRING[2]:='BC';
(*searched string*)
iFoundPos: INT:=0;
(*1st position found*)
END_VAR
En este ejemplo se han declarado las variables de entrada (sInputString y sSearchString). También se puede introducir directamente en la función las cadenas ('ABCBC.' y 'BC''). Las cadenas de caracteres deben ir entre comillas simples, tanto en la cabecera de la POU como en la función.
Se busca sSearchString ('BC’) en sInputString ('ABCBC’). En iFoundPos se escribe la posición de la primera ocurrencia (2).
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 |