标题:如何判断某一字符串是否为数据型字符串?
只看楼主
自强不西
Rank: 2
等 级:论坛游民
帖 子:125
专家分:22
注 册:2019-3-29
结帖率:68.75%
已结贴  问题点数:20 回复次数:10 
如何判断某一字符串是否为数据型字符串?
如题,请各位老师不吝赐教!
搜索更多相关主题的帖子: 不吝 判断 字符串 数据 是否为 
2020-11-26 16:22
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:4 
请自己测试一下哈
aa = 123.1232
if TYPE([aa]) == "N"
   messagebox("数值型")
else
   messagebox("不是数值型")
endif
2020-11-26 16:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
? s==TRANSFORM(VAL(s))
2020-11-26 19:23
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:4 
如果没小数用3楼的方法是最好的,否则可以用以下函数。
 LPARAMETER S
FOR i=0 TO 9
    s=STRTRAN(s,STR(i,1),'')
ENDFOR
return EMPTY(s) OR ALLTRIM(s)=='.'
如可能出现前导负号,最后一句再加上, OR ALLTRIM(s)=='-.' OR ALLTRIM(s)=='-'。可能有前导正号类似增加。

dBase有人接盘了。
2020-11-26 19:52
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:4 
*!* 大家看下面的情况
*!* 1)
S1='A1'
S2=TRANSFORM(VAL(S1))
?S2 && 0

*!* 2)
S1='1A'
S2=TRANSFORM(VAL(S1))
?S2 && 1
所以,简单的方法,好像没办法的,只能选逐个字符过滤


2020-11-27 08:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:4 
A1 = "123"
IF EMPTY(CHRTRAN(A1, "012345789", ""))
    ?"A1 为空"
ENDIF

坚守VFP最后的阵地
2020-11-27 09:17
自强不西
Rank: 2
等 级:论坛游民
帖 子:125
专家分:22
注 册:2019-3-29
得分:0 
谢谢各位老师,我先试下。
2020-11-27 11:18
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
*!*    A1 = '-.1232'  && -0.12
*!*    A1 = '-.123-2' && 0
*!*    A1 = '.1.232'  && 0
*!*    A1 = '123A2'   && 0

A1 = '1232'
?NumStr(A1)


FUNCTION NumStr(cStr)
IF SUBSTR(cStr,1,1) = "-" && 第一个"-"
   IF RAT('-',cStr) # 1   && 有多个"-"
      RETURN 0
   ELSE
      IF AT(".",cStr) # RAT(".",cStr)  && 有多个"."
         RETURN 0
      ELSE
         IF EMPTY(CHRTRAN(cStr, "-.012345789", ""))
            RETURN TRANSFORM(VAL(cStr))
         ELSE
            RETURN 0
         ENDIF   
      ENDIF
   ENDIF
ELSE
   IF AT(".",cStr) # RAT(".",cStr)  && 有多个"."
      RETURN 0
   ELSE
      IF EMPTY(CHRTRAN(cStr, ".012345789", ""))
         RETURN TRANSFORM(VAL(cStr))
      ELSE
         RETURN 0
      ENDIF   
   ENDIF
ENDIF
ENDFUNC
2020-11-27 12:59
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
为了提高执行速度,用CHR代替STR
LPARAMETER S
FOR i=48 TO 57
    s=STRTRAN(s,chr(i),'')
ENDFOR
return len(s)=0 OR ALLTRIM(s)=='.' OR ALLTRIM(s)=='-.' OR ALLTRIM(s)=='-' OR ALLTRIM(s)=='+.' OR ALLTRIM(s)=='+'

dBase有人接盘了。
2020-11-27 16:01
自强不西
Rank: 2
等 级:论坛游民
帖 子:125
专家分:22
注 册:2019-3-29
得分:0 
谢谢各位老师指教!判断一个字符串是否数字型字符串,在EXCEL中,只要一个isnumber函数就解决了,现在用VFP还是比较麻烦。
2020-11-28 09:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504015-1-1.html




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

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