|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
今天做东西的时候要用到从时间格式的字符串中提取字串的方法,之前一直想做的,都没去做,今天要用到了,终于决定做一个子程序,以后用起来就方便多了,既然做好了,就发上来大家共享一下吧。
大概是这么一个功能:
现有下列格式的字符串,可以看出来,时间是以 ':' 来分隔的,我要的是1981、11、8、0类似的几个数,也就是按照冒号把字符串分为几个字串,提取其中的某一串出来,因为整个字符串的长度不定,因此,不能直接使用string(n:m)的形式。
- 1981:11:8:0 -0.143923
- 1981:11:15:0 -0.311886
- 1981:11:22:0 -0.403949
- 1981:11:29:0 -0.304858
- 1981:12:6:0 0.119933
- 1981:12:13:0 0.182778
- 1981:12:20:0 -0.442663
复制代码
通过下面的子程序,当给定源字符串,分隔字符,分隔后字串的位置,就能返回相应的字串,比如:
substr("1981:11:8:0 -0.143923",':',3,substring)
则会返回 8
把上面的3改成2,则返回11,如果把3改成10,则返回NULL,也就是说按冒号分隔之后会形成4个字串,超出了4,则返回字符串NULL
为了节省大家的金币,直接贴出来啦!需要演示的可以下载附件以及演示数据
- subroutine substr(string,spliter,num,substring)
- character(*) string,spliter,substring
- integer num,id,nownum,len_spliter,len_substring
- len_spliter=len(spliter)
- nownum=1
- substring=string
- 100 continue
- len_substring=len_trim(substring)
- id=index(trim(substring),spliter)
- if(id==0)then
- if(nownum<num)then
- substring="null"
- endif
- goto 200
- endif
- if(nownum==num)then
- substring=trim(substring(1:(id-1)))
- goto 200
- endif
- substring=substring((id+len_spliter):len_substring)
- nownum=nownum+1
- goto 100
- 200 continue
- endsubroutine
复制代码
|
|