爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4763|回复: 4

[源代码] 替换字符串中的某个字符

[复制链接]

新浪微博达人勋

发表于 2013-7-18 17:40:03 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
将某个字符串(InStr)中的某个字符串(OldChar),不知道出现几次,全部替换为另一个字符串(NewChar),输出另一个字符串(OutStr)。看程序的变量定义,就可以知道没有对任何字符串的长度予以规定。
已经做出初步测试,测试通过,但是没有进行极端情况的测试。
测试包括:
1、将其中一个字符全部替换为空格。
2、将其中一个字符串全部替换为*和空格。

subroutine sub_replace_character(InStr,OutStr,OldChar,NewChar)
        !!!---   InStr是从非‘空格’字符开始的,对于其余三个变量没有要求
        implicit none
        character(len=*) :: InStr,OutStr
        character(len=*) :: OldChar,NewChar
        integer*4 :: AllCount,SubCountOld,SubCountNew,Count
        integer*4 :: i

        AllCount = len(InStr)
        SubCountOld = len(OldChar)
        SubCountNew = len(NewChar)
        if(InStr(1:SubCountOld).eq.OldChar) then
            OutStr(1:SubCountNew) = NewChar
            Count = SubCountNew
            i = 1+SubCountOld
        else
            OutStr(1:1) = InStr(1:1)
            Count = 1
            i = 2
        endif
        do while(i.le.AllCount-SubCountOld+1)
            if(InStr(i:i+SubCountOld-1).eq.OldChar) then
                OutStr = OutStr(1:count)//NewChar
                Count = Count + SubCountNew
                i = i+SubCountOld
            else
                OutStr = OutStr(1:Count)//InStr(i:i)
                Count = Count + 1
                i = i+1
            endif
        enddo
        if(i.le.AllCount) OutStr = OutStr(1:Count)//InStr(i:AllCount)
    end

评分

参与人数 3威望 +3 金钱 +40 贡献 +12 体力 +140 收起 理由
言深深 + 3 + 18 + 4 + 140
topmad + 10 + 3
mofangbao + 12 + 5

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-19 08:12:26 | 显示全部楼层
很实用的小代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-19 08:19:41 | 显示全部楼层
我貌似也有过类似的代码  不过不记得放哪里了 还是楼主有心  谢过啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-19 09:59:20 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-7-19 10:18:40 | 显示全部楼层
虫儿飞 发表于 2013-7-19 09:59
版主的是将一个字符串依据某个字符分段

还是你记性好,哈哈
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表