Fortran分割字符串和字符串替换的子程序

来源:互联网 发布:任务网源码 编辑:程序博客网 时间:2024/05/18 03:11

Fortran分割字符串和字符串替换的子程序

!=============================================================subroutine StringSplit(InStr,delimiter,StrArray,nsize)!----------------------------------------------!---将字符串InStr进行分割,结果放入StrArray中!---delimiter::分隔符号,例如';,,' 使用;和,分割字符串!---nsize:分割数目!---吴徐平2011-04-29(wxp07@qq.com)!----------------------------------------------implicit nonecharacter(len = *) , Intent( IN ) :: InStrcharacter(len = *)  , Intent( IN ) :: delimitercharacter(len = LEN(InStr)),dimension(LEN(InStr)),Intent( OUT ) :: StrArrayinteger, Intent( OUT ) :: nsize ! Effective Size of StrArrayinteger:: i,j ! loop variableinteger:: istart ! split index for Start Positionnsize=0istart=1do i=1,LEN(InStr)do j=1,LEN(delimiter)if (InStr(i:i) == delimiter(j:j)) thenif (istart == i) thenistart=i+1 ! ---可防止分隔符相连的情况end ifif (istart<i) thennsize=nsize+1StrArray(nsize)=InStr(istart:i-1)istart=i+1end ifend ifend doend do! ---匹配最后一个子字符串if (nsize>0) thenif (istart<LEN(InStr)) thennsize=nsize+1StrArray(nsize)=InStr(istart:LEN(InStr))end ifend if! ---如果无可分割的子字符串,则包含整个字符串为数组的第一元素if ( (nsize<1) .AND. (LEN(TRIM(InStr)) > 0 )) thennsize=1StrArray(1)=InStrend ifend subroutine StringSplit!!=============================================================subroutine StrReplace(InStr,OldChar,NewChar,OutStr)!------------------------------------------------------------!---将字符串InStr中的字符串OldChar替换成NewChar!---结果放入字符串OutStr中!---吴徐平2013-07-20(wxp07@qq.com)!------------------------------------------------------------implicit nonecharacter(len = *) , Intent( IN ) :: InStrcharacter(len = *) , Intent( IN ) :: OldCharcharacter(len = LEN(OldChar)) , Intent( IN ) ::NewCharcharacter(len = LEN(InStr)) , Intent( INOUT ) :: OutStrinteger :: i  ! loop variableOutStr=InStri=INDEX(OutStr,OldChar)do while(i>0)OutStr(i:i+LEN(OldChar)-1)=NewChari=INDEX(OutStr,OldChar)end doend subroutine StrReplace!------------------------------------------------------------


原创粉丝点击