| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 937 人关注过本帖
标题:[求助]字符型转成数字型
只看楼主 加入收藏
lsp_2
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-12-30
收藏
 问题点数:0 回复次数:4 
[求助]字符型转成数字型
本人是刚学VFP,现想要把一个字符型字段转换成数字型,字符型字段(SL)内容如下:10*2+5    10*2+2*5+3   、 5  、 1*5 等等,加个数字型字段计算出来也行!

现手上有一段相关代码不知道能否用上:
PROCEDURE EVA_CH
PARA X,Z
PRIV M,N,I,J,X1
SET EXAC ON
STOR 1 TO M,N
IF PARA()=1
        Z=1
ENDIF
X=UPPE(ALLT(X))
IF TYPE(X)="U"
        RETURN "0"
ENDIF

IF TYPE(X)="N".AND.AT("*",X)=0
                M=LTRI(STR(&X.*Z))
                RETURN IIF(VAL(M)>9999999999,"0",M)
ENDIF
J=INT((LEN(X)+1)/2)

DIME A(J,2)
A=""
FOR I=1 TO LEN(X)
        X1=SUBS(X,I,1)
        DO CASE
        CASE X1=" "
                *NOTHING
        CASE BETW(X1,"0","9") AND N=1
                A(M,1)=A(M,1)+X1
        CASE X1="+" OR X1="-"
                N=1
                IF A(1,1)<>""
                        M=M+1
                ENDIF
                A(M,1)=X1
        CASE X1="*" AND N=1 AND A(M,1)<>""
                N=2
        CASE N=2 AND X1<>"*"
                A(M,2)=A(M,2)+X1
        OTHE
                RETURN "0"
        ENDC
ENDF

=ASORT(A,2,-1,1)

FOR I=1 TO J
        A(I,1)=LTRIM(STR(VAL(A(I,1))*Z))
        IF I=1
                LOOP
        ENDIF
        IF A(I,2)=A(I-1,2)
                A(I,1)=LTRIM(STR(VAL(A(I,1))+VAL(A(I-1,1))))
                A(I-1,1)=""
                A(I-1,2)=""
        ENDIF
ENDF

FOR I=1 TO J
        A(I,2)=VAL(A(I,2))
        IF A(I,2)=1
                A(I,2)=0
        ENDIF
ENDF
=ASORT(A,2,-1,1)
FOR I=1 TO J
        A(I,2)=LTRI(STR(A(I,2)))
        IF A(I,2)="0"
                A(I,2)=""
        ENDIF
ENDF

X=""
FOR I=1 TO J
        IF A(I,1)="" OR A(I,1)="0"
                LOOP
        ENDIF
        X1=LEFT(A(I,1),1)
        IF X1<>"-" AND X1<>"+"
                A(I,1)="+"+A(I,1)
        ENDIF
        X=X+A(I,1)
        IF A(I,2)<>""
                X=X+"*"+A(I,2)
        ENDIF
ENDF
IF LEFT(X,1)="+"
        X=SUBS(X,2)
ENDIF
IF TRIM(X)=""
        X="0"
ENDIF
RETURN IIF(EVAL(X)=0,"0",X)

[[it] 本帖最后由 lsp_2 于 2008-6-1 15:00 编辑 [/it]]

[[it] 本帖最后由 lsp_2 于 2008-6-2 09:07 编辑 [/it]]
搜索更多相关主题的帖子: 字符型 数字型 字段 PARA 
2008-06-01 14:49
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
scan
  csl=sl
  ?&csl
endscan

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-06-02 11:32
午丁
Rank: 1
等 级:新手上路
威 望:1
帖 子:71
专家分:0
注 册:2008-3-19
收藏
得分:0 
数值字段等于
repl 数值字段 with &SL all && n1

只此一行足也

[[it] 本帖最后由 午丁 于 2008-6-2 11:38 编辑 [/it]]

[[it] 本帖最后由 午丁 于 2008-6-2 11:39 编辑 [/it]]
2008-06-02 11:33
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
或者
replace all 数值型字段 with evaluate(sl)

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-06-02 11:34
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
你直接
List All sl,evaluate(sl)

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-06-02 11:35
快速回复:[求助]字符型转成数字型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026153 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved