Plant仿真模型在读入外部数据的过程中,数据格式经常出现不符合Simtalk编码规则的情况,一般需要进行数据格式的规范化处理,使其满足使用要求。
通常从信息系统接入的数据类型大多为字符型,数据格式五花八门,较为常见的问题包括:
(1)数据格式不规范:例如字符串前后端出现空格、大小写错乱等问题,针对这些问题可以采用“常用字符串处理命令”中介绍的常用命令函数来解决。
(2)数据中部分字符不规范:例如从信息系统接入的日期数据一般用“-”进行连接(如:2022-03-15),如果直接进行日期类型转换,Simtalk语法会报错,Plant编码规则要求用“/”连接(如:2022/03/15),那么就需要将原字符串中的“-”替换为“/”,下面介绍两种替换方法:
方法一:采用常用字符串处理命令替换,代码如下:
var strDate:="2022-03-15" --日期文本数据
repeat
var i:=pos("-",strDate) --查找"-"所在位置
strDate:=incl("/",omit(strDate,i,1),i) --删除"-",并在该位置插入"/"
until pos("-",strDate)=0 --当全部替换完成,则终止循环
方法二:运用正则表达式替换,代码如下:
var strDate:="2022-03-15" --日期文本数据
strDate:=regex_replace(strDate,"[-]","/") --将文本中所有"-"替换为"/"
以上两种方法均可以达到替换字符串中指定字符的目的。方法一采用常用字符串处理命令,首先查找字符位置,然后进行替换,循环这一过程,直到完成所有替换任务;方法二根据定义的正则表达式内容统一完成替换(详细正则表达式定义方法见帮助文档),显然方法二更加简洁高效。
Plant从12.2版本开始支持正则表达式搜索和替换,该语法在其它编程语言中较为常见,熟练掌握后可以很大程度提高数据格式处理效率。