三菱FX5U中字符串的查找与替换怎么用?(附程序案例)

boyanx15小时前技术教程2
今天我们来讲一下字符串的查找,当在通信过程中,我们收到的是一系列的字符串,我们要在一系列字符串中查找有用的信息并进行与协议对比,然后得出对比结果并进行相应的处理,字符串的查找一般会用在PLC与其他设备通信中,前面我们讲过了一些列的字符串处理方法:
三菱FX5U中如何在一串字符串中随意截取部分字符串-字符串提取指令的应用
三菱FX5U字符串长度检测指令的应用
三菱FX5U字符串传递及字符串转化为浮点型数据相关指令的应用
三菱FX5U与上位机Socket通信(PLC作为客户端,附详细程序及注解)
一、指令介绍
字符串查找指令: INSTR
官方解释:从(s2)中指定的软元件编号以后中存储的字符串数据的左侧第(s3)字符开始,搜索(s1)中指定的软元件编号以后中存储的字符串数据,将搜索结果存储到(d)中指定的软元件中。
内容、范围、数据类型:

(s1): 搜索字符串或存储了搜索字符串的软元件起始编号 字符串类型

(s2): 搜索的字符串或存储了搜索的字符串的软元件起始编号 字符串类型

(d) : 存储搜索结果的软元件起始编号 有符号BIN16位

(s3): 搜索开始位置 有符号BIN16位

可以使用的软元件:

出错代码 (SD0/SD8067)

2820H:

(s1)中指定的软元件以后,相应软元件的范围内没有NULL代码(00H)时。

(s2)中指定的软元件以后,相应软元件的范围内没有NULL代码(00H)时。

3405H:

(s3)的值超过了(s2)的字符数时。

(s1)的字符串超过了16383字符时。

(s2)的字符串超过了16383字符时。

二、程序测试

官方解释永远都是非常晦涩难懂,我们用程序案例来讲解这个指令的使用:

我们将字符串“adcd1234”传送到D122

将字符串“cd”传送到D156

将字符串“12”传送到D158

我们分别在D122中查找D156与D158中的字符串,直接看结果:

我们可以看到,字符串“cd”在字符串“adcd1234”中的位置是从第三个字符开始,所以D166中的数据为“3”,并且我们设置的是从D122的左侧第一个字符开始搜索。

我们又设置了从 D122的左侧第二个字符开始搜索,搜索字符串“12”在D122中的位置,结果发现,搜索结果为“5”,就是不管从第几位开始搜索,字符串的位置始终为从D122第一位开始排序。

注意: 搜索开始位置(s3)为负数或“0”的情况下,不进行处理。如下:

将字符串“12”传送到D160

我们可以看到,指令执行过后,因为S3的值设置的为“0”,所以D170的值没有发生变化。


相关文章

算法系列:实现strStr函数(字符串)

28. 实现 strStr()描述给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则...

Python 中 字符串处理的高效方法,不允许你还不知道

以下是 Python 中 字符串处理的高效方法,涵盖常用操作、性能优化技巧和实际应用场景,帮助您写出更简洁、更快速的代码:一、基础高效操作1.字符串拼接:优先用join()代替+原因:join() 预...

C++基础——文件逐行读取与字符匹配

C++基础——文件逐行读取与字符匹配目录技术背景C++读取文件C++字符串匹配C++运行时间统计总结概要版权声明技术背景用惯了python,对其他语言就比较的生疏。但是python很多时候在性能上比较...

你只会用 split?试试 StringTokenizer,性能可以快 4 倍

我们都知道,分割字符串要使用 String 的 split() 方法,split 方法虽然深入人心,使用也简单,但效率太低!其实在 JDK 中,还有一个性能很强的纯字符串分割工具类:StringTok...

Python字符串比较的隐藏法则:Unicode对决、内存地址暗战!

字符串比较的底层规则核心原理:字符逐个对比,基于Unicode值一决胜负!# 规则演示:从首字符开始逐位比较 print("apple" > "app")...

打钱专业户!330穿的八级金币黑枪王

大家好,我是你们的游戏小编:冴之木七星在八级,提起黑枪,大家第一个想到的可能还是莱茵(菜田),但是要说最强黑枪车,我Strv S1第一个不服。毕竟:这是一台只为黑枪而生的黑枪车!极高的隐蔽,超高的穿深...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。