| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2081 人关注过本帖
标题:[求助]如何将宽度不固定的字符串中的数字提取出来并求和
只看楼主 加入收藏
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
不知道你的字符串里面是否要求处理负数 ?

个性太多,无法显示
2012-09-03 09:51
lqzlql
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-9-2
收藏
得分:0 
zf='战2.1上23.03海2'
ln=LEN(zf)
FOR i=1 TO ln
l=ASC(SUBSTR(zf,i,1))
IF l<46 OR l>57  OR  l=47
zf=STUFF(zf,i,1,' ')
ENDIF
ENDFOR
zf=strt(zf,'  ',' ')
zf=ALLTRIM(zf)
zf=strt(zf,' ','+')
?zf+'='
??&zf
2012-09-03 10:26
lqzlql
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-9-2
收藏
得分:0 
zf='战2.1上23.03海2'
ln=LEN(zf)
FOR i=1 TO ln
l=ASC(SUBSTR(zf,i,1))
IF l<46 OR l>57  OR  l=47
zf=STUFF(zf,i,1,' ')
ENDIF
ENDFOR
zf=strt(zf,'  ',' ')
zf=ALLTRIM(zf)
zf=strt(zf,' ','+')
?zf+'='
??&zf
2012-09-03 10:29
lqzlql
Rank: 1
等 级:新手上路
帖 子:20
专家分:2
注 册:2012-9-2
收藏
得分:0 
Clear
lcString = "战2.1上23.03海2"
lcTemp = Chrtranc(lcString, '0123456789.', '')
lcString = Chrtranc(lcString, lcTemp, Replicate('+', Lenc(lcTemp)))
? &lcString


2012-09-03 10:40
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
以下是引用taohua300在2012-9-3 09:51:56的发言:

不知道你的字符串里面是否要求处理负数 ?
先谢谢了,要考虑各种可能出现的情况的最优处理方案。
2012-09-03 12:13
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
以下是引用taohua300在2012-9-3 09:49:37的发言:

Clear
lcString = "战2.1上23.03海2"
lcTemp = Chrtranc(lcString, '0123456789.', '')
lcString = Chrtranc(lcString, lcTemp, Replicate('|', Lenc(lcTemp)))
m.s = 0
For i = 1 To Getwordcount(lcString, '|')
    m.s = m.s + Val(Getwordnum(lcString, i, '|'))
Next
? m.s
思路:
将字符串中非数字和“.”的字符全部替换成 '|'
然后使用Getwordnum 和 取出字符转化成数值型相加
不能头痛医头,脚痛医脚,要有一个合理的方法
2012-09-03 12:31
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
以下是引用lygcw9603在2012-9-3 12:31:36的发言:

不能头痛医头,脚痛医脚,要有一个合理的方法
难道你没有把你的病情说清楚么
针对你的病情,还有哪里没有治好 ?

个性太多,无法显示
2012-09-03 13:27
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
回复 17楼 taohua300
谢谢了,按题意问题已解决。
lcString = Chrtranc(lcString, lcTemp, Replicate('|', Lenc(lcTemp)))
可改为:lcString = Chrtranc(lcString, lcTemp, '|')

[ 本帖最后由 lygcw9603 于 2012-9-3 15:40 编辑 ]
2012-09-03 15:37
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
回复 18楼 lygcw9603
改为:lcString = Chrtranc(lcString, lcTemp, '|')
是不行的
至少vfp9.0不通过

个性太多,无法显示
2012-09-03 17:01
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:0 
以下是引用taohua300在2012-9-3 17:01:58的发言:

改为:lcString = Chrtranc(lcString, lcTemp, '|')
是不行的
至少vfp9.0不通过
VFP9.0运行正常
2012-09-03 17:15
快速回复:[求助]如何将宽度不固定的字符串中的数字提取出来并求和
数据加载中...
 
   



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

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