恭喜,你发布的帖子
发布于 2026-07-03 14:02:33
12楼
FUNCTION_BLOCK FB_ExtractBrackets
VAR_INPUT
InputString : STRING[255];
BracketIndex : INT;
END_VAR
VAR_OUTPUT
ExtractedString : STRING[100];
Valid : BOOL;
TotalBrackets : INT;
END_VAR
VAR
i : INT;
bracketCount : INT;
startPos : INT;
endPos : INT;
currentPos : INT;
strLen : INT;
ch : CHAR;
END_VAR
strLen := LEN(InputString);
bracketCount := 0;
currentPos := 1;
Valid := FALSE;
ExtractedString := '';
TotalBrackets := 0;
IF strLen > 0 THEN
WHILE currentPos <= strLen AND NOT Valid DO
ch := MID(IN := InputString, L := 1, P := currentPos);
IF ch = '[' THEN
bracketCount := bracketCount + 1;
IF bracketCount = BracketIndex THEN
startPos := currentPos + 1;
FOR i := startPos TO strLen DO
ch := MID(IN := InputString, L := 1, P := i);
IF ch = ']' THEN
endPos := i - 1;
ExtractedString := MID(IN := InputString, L := endPos - startPos + 1, P := startPos);
Valid := TRUE;
EXIT;
END_IF;
END_FOR;
END_IF;
END_IF;
currentPos := currentPos + 1;
END_WHILE;
TotalBrackets := bracketCount;
END_IF;
END_FUNCTION_BLOCK
## 使用示例
假设输入字符串 [M251236D1][100Cr6][E1250396] :
// 提取第一组方括号内容
FB_ExtractBrackets(InputString := "[M251236D1][100Cr6][E1250396]",
BracketIndex := 1);
// ExtractedString = "M251236D1", Valid = TRUE
// 提取第二组方括号内容
FB_ExtractBrackets(InputString := "[M251236D1][100Cr6][E1250396]",
BracketIndex := 2);
// ExtractedString = "100Cr6", Valid = TRUE
// 提取第三组方括号内容
FB_ExtractBrackets(InputString := "[M251236D1][100Cr6][E1250396]",
BracketIndex := 3);
// ExtractedString = "E1250396", Valid = TRUE
请填写推广理由:
分享
只看
楼主