문자열 위치 찾기
FIND는 먼저 첫 번째 입력 문자열에서 두 번째 입력 문자열을 발생하는 위치를 반환합니다. 결과는 출력 변수에 작성됩니다. 두 번째 입력 문자열이 첫 번째 입력 문자열에서 발생하지 않으면 0 값이 반환됩니다.
입력
입력 문자열
입력 문자열에서 검색되는 대/소문자를 구분하는 문자열
출력
값이 0보다 큰 경우: 검색된 문자열이 있는 위치입니다. 여기서 1은 첫 번째 문자를 나타냅니다
값이 0인 경우: 검색 문자열을 찾을 수 없습니다.
이 명령을 UTF-8 문자열과 함께 사용하는 경우, 데이터 유형 STRING에서 UTF-8 문자열에 대한 메모를 참조하십시오.
문자열이 [형식] 선언 필드에서 입력 변수(IN1 및 IN2)에 정의된 길이보다 긴 경우 에러가 발생합니다(에러 처리는 sys_bIsCarry 참조).
입력 또는 출력에 적용된 문자열이 유효하지 않은 문자열인 경우
입력 문자열이 필드 [형식]의 입력 변수에 대해 정의된 길이보다 긴 경우.
입력 또는 출력에 적용된 문자열이 유효하지 않은 문자열인 경우
입력 문자열이 필드 [형식]
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
sInputString: STRING[5]:='ABCBC';
(*sample string*)
sSearchString: STRING[2]:='BC';
(*searched string*)
iFoundPos: INT:=0;
(*1st position found*)
END_VAR
이 예에서 입력 변수(sInputString 및 sSearchString)가 선언됩니다. 대신 문자열('ABCBC.' 및 'BC')을 펑션에 직접 입력할 수 있습니다. POU 헤더와 펑션 모두에서 문자열은 따옴표 안에 있을 수 있습니다.
sSearchString('BC’)은 sInputString('ABCBC’)에서 검색됩니다. 첫 발생 위치(2)는 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 |