以下是引用schtg在2025-10-16 05:17:05的发言:
@nbwww,吹水版主,学习啦!正则确实非常好,谢谢!
又新加一些数字,结果确实正则好用!
@nbwww,吹水版主,学习啦!正则确实非常好,谢谢!
又新加一些数字,结果确实正则好用!
如果有些没有“元〞
如10元写成10;12.34元写成12.34
[此贴子已经被作者于2025-10-16 06:22编辑过]
程序代码:
DECLARE long sscanf IN msvcr71 long, string, single@, long@
DECLARE long strcpy IN msvcr71 string@, string
购物明细 = "黄鳝10条40元牛肉61元鸡蛋11元冷菜75元蔬菜53元肉10.30元"
buffer = REPLICATE(0h00,256)
p = strcpy(@buffer, 购物明细)
a = 0.00
n = 0
t = 0
DO WHILE SYS(2600,p,1) != 0h00
IF sscanf(p,"%f%n",@a,@n) == 1
p = p+n
IF SYS(2600,p,2)=="元"
? a
t = t+a
p = p+2
ENDIF
ELSE
p = p+1
ENDIF
ENDDO
? t
程序代码:
DECLARE long sscanf IN msvcr71 long, string, single@, long@
DECLARE long strcpy IN msvcr71 string@, string
USE C:\_temp\gwmxz.dbf ALIAS td
buffer = REPLICATE(0h00,256)
REPLACE ALL 合计 WITH f_合计(购物明细) IN "td"
SELECT * FROM td
FUNCTION f_合计(c购物明细)
p = strcpy(@buffer, 购物明细)
a = 0.00
n = 0
t = 0
DO WHILE SYS(2600,p,1) != 0h00
IF sscanf(p,"%f%n",@a,@n) == 1
p = p+n
IF SYS(2600,p,2)=="元"
t = t+a
p = p+2
ENDIF
ELSE
p = p+1
ENDIF
ENDDO
RETURN t
ENDFUNC