1.4 Codesys在字符串1查找字符串2的位置(从左向右、从右向左)功能

本文介绍两种字符串查找算法:从左向右查找子串首次出现的位置及从右向左查找子串首次出现的位置。通过具体功能代码实现,展示了如何利用标准库进行高效字符串匹配。

1、在长字符串String1中的指定位置开始,从左向右查找短字符串String2最先出现的位置。具体功能代码如下:

FUNCTION FINDP : INT
VAR_INPUT
	InString1 : STRING(255);          //长字符串
	InString2 : STRING(255);          //短字符串
	InPos     : INT;                  //查找起始位置
END_VAR
VAR
	iPostion  : INT;
	iLength1  : INT;	
	iLength2  : INT;
END_VAR


//计算从字符串String1指定的位置开始出现String2的位置(从左往右)
iLength1 := Standard.LEN(InString1);
iLength2 := Standard.LEN(InString2);
IF iLength1 < iLength2 OR iLength2 = 0 THEN 
   RETURN; 
END_IF;

FOR iPostion := MAX(InPos,1) TO (iLength1 - iLength2 + 1) BY 1 DO
	IF Standard.MID(InString1,iLength2,iPostion) = InString2 THEN
		FINDP := iPostion;
		RETURN;
	END_IF;
END_FOR;
FINDP := 0;

测试结果如下:

2、在长字符串String1中的最右端开始,从右向左查找短字符串String2最先出现的位置。具体功能代码如下:

FUNCTION FINDB : INT
VAR_INPUT
	InString1 : STRING(255);          //长字符串
	InString2 : STRING(255);          //短字符串
END_VAR
VAR
	iPosition : INT;
	iLength1  : INT;	
	iLength2  : INT;
END_VAR

//计算String2在String1出现的位置(从右往左)
iLength1 := Standard.LEN(InString1);
iLength2 := Standard.LEN(InString2);
IF iLength1 < iLength2 THEN
   FindB := 0;
   RETURN;
END_IF;
FOR iPosition := iLength1 - iLength2 + 1 TO 1 BY -1 DO
	IF Standard.MID(InString1,iLength2,iPosition) = InString2 THEN
	   FindB := iPosition;
	   RETURN;
	END_IF;
END_FOR;
FindB := 0;

测试结果如下:

   以上功能的实现依靠Standard库的字符串功能,因此查找字符串长度最大长度255。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codesys_PEPSI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值