注册 登录
编程论坛 VFP论坛

请教 - 检测一个字符串中是否包含数字的函数

huasinstamps 发布于 2021-09-30 19:20, 1993 次点击
请问下老师们VFP中有没有这样一个函数,可以检测一个字符串中是否包含数字,如“aaa66bbb”。需要说明这个数字的位置不规则,但不在字符串的头一个或最后一个。谢谢!
8 回复
#2
sdta2021-09-30 19:43
方法一:
aa= "aaa66bbb"
bb = CHRTRAN(aa, "0123456789", SPACE(0))
IF LEN(aa) = LEN(bb)
    ? "不包含数字"
ELSE
    ? "包含数字"
ENDIF

方法二:
ISDIGIT( ) 函数。具体用法看VFP9帮助文件中的相关内容。
用 FOR ENDFOR 逐字节判断字符串 AA 中 是否包含数字 0-9 。

方法三:
ASC() 函数。具体用法看VFP9帮助文件中的相关内容。
用 FOR ENDFOR 逐字节判断字符 AA 中的字符返回值是否在48-57之间。
#3
huasinstamps2021-09-30 22:07
多谢sdta老师!采用了方法一

以前一直用方法二,想找一种更简洁的方法,果然是有的。。。论坛上的前辈实在是太厉害了

我再简化了一点:
aa='aaa66bbb'
if aa=CHRTRAN(aa, "0123456789", '')
.....

[此贴子已经被作者于2021-9-30 22:31编辑过]

#4
厨师王德榜2021-10-01 10:05
还可以用正则,办法很多的.
#5
吹水佬2021-10-01 10:43
字符串较长和数据量大有考虑运行效率时可试试
DECLARE LONG strcspn IN msvcrt STRING@,STRING@
aa='aaa66bbb'
? strcspn(aa,"0123456789")<LEN(aa)
#6
独木星空2021-10-02 07:00
INT(MID(E131,1,5)*MID(E131,9,3)+0.5)
这是Excel中取文本中的数值函数,"E131"中放着文本,第二参数是从第几个字符开始取数,第三个参数是取几个字符。用它们可以完成文本中的数值计算。
#7
laowan0012021-10-04 09:38
回复 3楼 huasinstamps
if aa=CHRTRAN(aa, "0123456789", '')
上面这句,如果数字在字符串最后的话,结果会是.T.,改成下面这样就可以了
if aa==CHRTRAN(aa, "0123456789", '')
#8
huasinstamps2021-10-09 17:08
回复 7楼 laowan001
#9
如歌岁月2021-10-16 10:26
向高手学习
1