以下是引用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