| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1694 人关注过本帖
标题:如何判断某一字符串是否为数据型字符串?
只看楼主 加入收藏
自强不西
Rank: 2
等 级:论坛游民
帖 子:147
专家分:26
注 册:2019-3-29
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:10 
如何判断某一字符串是否为数据型字符串?
如题,请各位老师不吝赐教!
搜索更多相关主题的帖子: 不吝 判断 字符串 数据 是否为 
2020-11-26 16:22
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1545
专家分:3003
注 册: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
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:4 
? s==TRANSFORM(VAL(s))
2020-11-26 19:23
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:763
专家分:2503
注 册: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
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册: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
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:4 
A1 = "123"
IF EMPTY(CHRTRAN(A1, "012345789", ""))
    ?"A1 为空"
ENDIF

坚守VFP最后的阵地
2020-11-27 09:17
自强不西
Rank: 2
等 级:论坛游民
帖 子:147
专家分:26
注 册:2019-3-29
收藏
得分:0 
谢谢各位老师,我先试下。
2020-11-27 11:18
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册: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
等 级:贵宾
威 望:41
帖 子:763
专家分:2503
注 册: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
等 级:论坛游民
帖 子:147
专家分:26
注 册:2019-3-29
收藏
得分:0 
谢谢各位老师指教!判断一个字符串是否数字型字符串,在EXCEL中,只要一个isnumber函数就解决了,现在用VFP还是比较麻烦。
2020-11-28 09:33
快速回复:如何判断某一字符串是否为数据型字符串?
数据加载中...
 
   



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

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