回复:字符串里的字符位置查找

已锁定

'Razor

西门子1847工业学习平台

  • 帖子

    3208
  • 精华

    41
  • 被关注

    222

论坛等级:至圣

注册时间:2008-03-31

钻石 钻石 如何晋级?

发布于 2025-01-18 20:31:09

6楼

再再介绍一种方法:使用FOR循环替换FIND+使用CONTACT替换MID。

    1、初始化

REGION initialization

    #tempStrSrc := #iStrSrc;

    #tempStrFlag := #iStrFlag;

END_REGION

2、使用FOR循环替换FIND

REGION logic

    

    REGION fixFlagsPositions

        #tempIntSrcLen := LEN(#tempStrSrc);

        FOR #tempDIntSrcStrIndex := #cIntZero TO #tempIntSrcLen DO

            IF #tempDIntOrderNumIndex >= #cIntZero AND #tempDIntOrderNumIndex < #cIntThree THEN//execute until find out the third flag

                

                IF #tempStrSrc[#tempDIntSrcStrIndex] = #iStrFlag THEN//find out flag

                    #ioArrayOrderNum[#tempDIntOrderNumIndex] := #tempDIntOrderNumIndex;//save flag order number

                    #tempDIntOrderNumIndex := #tempDIntOrderNumIndex + #cIntOne;//self-add

                    #ioArrayPosition[#tempDIntPosIndex] := #tempDIntSrcStrIndex;//save flag position

                    #tempDIntPosIndex := #tempDIntPosIndex + #cIntOne;//self-add 

                END_IF;

            ELSE

                ;

            END_IF;

            IF #tempDIntOrderNumIndex = #cIntThree THEN

                EXIT;

            END_IF;

        END_FOR;

    END_REGION

3、使用CONTACT替换MID

    REGION getSubstring

        FOR #tempDIntSubstrIndex := #ioArrayPosition[#cIntOne] + #cIntOne TO #ioArrayPosition[#cIntTwo] - #cIntOne DO

            #tempStr := '';

            #tempStr := #tempStrSrc[#tempDIntSubstrIndex];

            #tempStrSubstr := CONCAT(IN1 := #tempStrSubstr, IN2 := #tempStr);

        END_FOR;

    END_REGION

4、输出

REGION output

    #oStrSubstr := #tempStrSubstr;

END_REGION



少即是多
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15100条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。