fortran 里面如何实现将字符串转换为数值型

fortran 里面如何实现将字符串转换为数值型,第1张

character( 3 ) :: cStr = '123'
Integer :: iInt = 0
Read( cStr , ) iInt
此时,iInt = 123(数字)
转换成浮点数也类似。
character( 3 ) :: cStr = '123'
Real :: rReal = 00
Read( cStr , ) rReal
此时 rReal = 1230
从数字转换成字符串,用 Write 既可
character( 3 ) :: cStr
Integer :: iInt = 123
Write( cStr , ) iInt
此时 cStr = '123'

可以用如下自定义函数

Public Function mystr(ll, ParamArray x())
    Dim r, rr
    For Each r In x
        If IsArray(r) Then
            For Each rr In r
            If rr <> "" Then mystr = mystr & ll & rr
            Next rr
        Else
            mystr = mystr & ll & r
        End If
    Next r
    mystr = Mid$(mystr, 2, Len(mystr))
End Function

第一参数:连接符

第二参数:需要连接的单元格区域。

第三、四……参数:可省略,如不省略,功能同第二参数。

如上例可写公式为:=mystr(",",A1:A4)

想了一个比较笨的方法。先在R里定义这个函数:

splitstring<-function(string){
    str2<-strsplit(string,"")[[1]]
    stringsplit<-NULL
    j<-1
    stringsplit[j]<-str2[1]
    findtype<-function(char){
        if(grepl("[[:alpha:]]",char))
            type<-"alphabet"
        else if(grepl("[[:digit:]]",char))
            type<-"digit"
        else type<-"chinese"
        type
    }
    type<-findtype(str2[1])
    for(i in 2:length(str2)){
        type2<-findtype(str2[i])
        if(type2==type) stringsplit[j]<-paste(stringsplit[j],str2[i],sep="")
        else{
            j<-j+1
            type<-type2
            stringsplit<-c(stringsplit,str2[i])
        }
    }
    stringsplit
}

直接跑

splitstring("中国123abc")

就好了

如果要区分更多的东西,就改一下内部的findtype()函数。我现在写的只能区分字母、数字和其他东西(比如标点和中文就分不开了)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12753271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存