oracle分割字符串split_FanucKarel中实现字符串分割
“分享与快乐同在!”最近有小伙伴询问如何按指定分隔符分割字符串,在karel中并没有按字符分割的内置程序供我们使用,那么我们就来实现这个功能!在项目中,经常会在字符串中提取数据,比如机器人与相机使用TCP/IP通讯、字符串文本中数据提取等等。如何按字符将一个字符串数据拆分为多个字符串,最终将字符串转换为其他数据类型?实现代码:注:在代码中并未将字符串转为real数据类型,那只是调用一下...

“ 分享与快乐同在!”
最近有小伙伴询问如何按指定分隔符分割字符串,在karel中并没有按字符分割的内置程序供我们使用,那么我们就来实现这个功能!
在项目中,经常会在字符串中提取数据,比如机器人与相机使用TCP/IP通讯、字符串文本中数据提取等等。如何按字符将一个字符串数据拆分为多个字符串,最终将字符串转换为其他数据类型?
实现代码:
注:在代码中并未将字符串转为real数据类型,那只是调用一下内置函数。
PROGRAM str_cut1%STACKSIZE = 4000%INCLUDE ../0_Lib/libTypeVAR PList:PRMType --参数存放位置 count,i,prmCount:INTEGER --字符串分割后存放位置,根据实际需求设定数组、字符串长度。 StrList:ARRAY[30] OF STRING[30] --字符串剪切分割 ROUTINE str_split(source,split:STRING;strArray:ARRAY OF STRING):INTEGER FROM libRoutine --获取参数函数 ROUTINE GetPRM(count:INTEGER;valueType:ARRAY OF INTEGER;intValue:ARRAY OF INTEGER;realValue:ARRAY OF REAL;str:ARRAY OF STRING;stateValue:ARRAY OF INTEGER):INTEGER FROM libRoutine BEGIN --获取参数 prmCount = GetPRM(PList.count , PList.valueType , PList.intValue , PList.realValue , PList.str , PList.statusValue) --判断参数1、2 均为字符串 IF((prmCount =2) AND ( PList.valueType[1] = strType ) AND ( PList.valueType[2] = strType ) ) THEN --按参数2字符串,分割参数1字符串,结果存放在 Strlist数组中 count = str_split(PList.str[1],PList.str[2],StrList) --打印分割后,字符串段数 WRITE(CR,'total:',count,CR) --遍历打印字符串 FOR i=1 TO count DO WRITE(' [',StrList[i],'] ') ENDFOR ENDIF --end--END str_cut1
程序中,引用了libroutine文件中的 str_split函数来实现字符串分割。
str_split函数有3个参数:
source:需要被分割的字符串。
split: 分割符号
strArray:分割后的字符串
返回值:字符串被分割后的段数,如果没有分割,也将返回1。
libRoutine 文件中 str_split函数实现代码:
--按字符分割字符串--source:被分割字符串--split:分割符,支持多个字符--strArray:分割后的单个字符串数组ROUTINE str_Split(source,split:STRING;strArray:ARRAY OF STRING):INTEGERVAR count,i:INTEGER splitLen:INTEGER sourceLen:INTEGER readPos:INTEGER splitIndex:INTEGER strTemp:STRING[254] maxCount:INTEGERBEGIN count =0 splitIndex = 0 readPos = 1 splitLen = STR_LEN(split) sourceLen = STR_LEN(source) maxCount = ARRAY_LEN(strArray) IF (splitLen = 0) OR (sourceLen = 0) THEN RETURN (0) ENDIF FOR i = 1 TO maxCount DO --复制源字符串 strTemp = SUB_STR(source,readPos,sourceLen) --查找分隔符位置 splitIndex = INDEX(strTemp,split) count=count+1 IF splitIndex > 0 THEN readPos = readPos + splitIndex+splitLen-1 --剪切字符串 strArray[count] = SUB_STR(strTemp,1,splitIndex-1) else strArray[count] = strTemp RETURN (count) ENDIF --判断越界 IF readPos > sourceLen THEN RETURN (count) ENDIF ENDFOR RETURN (count) END str_Split
OK!今天的分享到此结束,记得分享哦!







NO.97
Robot Tips
2020
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)