- 积分
- 7459
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-9-20
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 虫儿飞 于 2015-11-11 17:28 编辑
先不说别的,先贴程序。
program main
implicit none
character*30 :: str
character*100 :: rstr(1000)
integer*4 :: n,i
str = '545110-99999-2013.TXT'
call sub_split(trim(str),'-',rstr,n)
print *,n
do i= 1,n
print *,i,rstr(i),len(rstr(i))
enddo
return
end
subroutine sub_split(str,instr,rstr,n)
!!! 原字符串str从非空开始,结束于非空
!!! str 需要分割的字符串,instr 分割字符,支持单个字符或者字符串作为分割字符,rstr 存放分割结果的字符数组,允许最多存放1000段,每段100个字符,n 实际分割出的字符(串)数
implicit none
character(len=*) :: str,instr
character*100 :: rstr(1000)
integer*4 :: n
integer*4 :: allcount,subcount
integer*4 :: ilab,i
logical*4 :: logflag
allcount = len(str)
subcount = len(instr)
i=1
n = 0
ilab = 1
logflag = .false.
do while(i<=allcount-subcount)
if(str(i:i+subcount-1).eq.instr) then
if(logflag) then
n = n+1
rstr(n) = str(ilab:i-1)
logflag = .false.
endif
ilab = i+subcount
i = i+1
else
logflag = .true.
i = i+1
endif
enddo
if(logflag) then
if(str(i:i+subcount-1).eq.instr) then
n=n+1
rstr(n) = str(ilab:i-1)
else
n=n+1
rstr(n) = str(ilab:i+subcount-1)
endif
endif
return
end
目前只支持单一分隔符(多个字符组成字符串算是单一分隔符)。如果字符串是这样的: '-545110---99999--2013-TXT-',可以用'-'作为分隔符分为四段,用'--'分为三段......其余的供联想
如果需要多个分隔符,可以将其他的字符都替换为一种,也可以提供程序。
替换字符串中的某个字符 http://bbs.06climate.com/forum.php?mod=viewthread&tid=15825
当然之前也有其他小伙伴给出了程序,不过侧重点不一样,不过我的亮点在于可以支持字符串作为分隔符,可操作性更高。不过程序一并给出,供参考。
数据分割函数 http://bbs.06climate.com/forum.php?mod=viewthread&tid=9624
fortran中按字符拆分字符串的子程序 http://bbs.06climate.com/forum.php?mod=viewthread&tid=4632
欢迎大家进行异常测试,并十分希望大家将测试结果反馈,谢谢!
|
评分
-
查看全部评分
|