| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 222 人关注过本帖
标题:【分享】VFP9增强命令TRIM、ALLTRIM、RIGHT
只看楼主 加入收藏
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:371
专家分:865
注 册:2014-6-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
【分享】VFP9增强命令TRIM、ALLTRIM、RIGHT
去数值尾部的0,如果数值字段多记录多,转json很有用
? ALLTRIM("12.0", "0",".")
? RTRIM("12.100", "0")
? TRIM(TRANSFORM(-012.00), "0")

2万记录5字段测试:TRIM(TRANSFORM(-012.00), "0")
自定义函数 0.328 秒
TRIM命令   0.064 秒
速度大约提高 5 倍

搜索更多相关主题的帖子: VFP9 字段 命令 分享 TRIM 
3 天前 17:34
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:811
专家分:3245
注 册:2018-3-13
收藏
得分:20 
以下是引用kangss在2025-10-20 17:34:36的发言:
? ALLTRIM("12.0", "0",".")

有这么用的吗?1200 全变 12 了
? ALLTRIM("1200.00", "0",".")
? ALLTRIM("1200", "0",".")

这家伙很懒,啥也没留下
3 天前 18:54
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:371
专家分:865
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2025-10-20 18:54:29的发言:
有这么用的吗?1200 全变 12 了
? ALLTRIM("1200.00", "0",".")
? ALLTRIM("1200", "0",".")

这么用确实有BUG

这样可以:
a = "1200"
b = "1200.00"

? LTRIM(RTRIM(RTRIM(STR(VAL(a),20,4), '0'), '.'))
? LTRIM(RTRIM(RTRIM(STR(VAL(b),20,4), '0'), '.'))


[此贴子已经被作者于2025-10-21 18:58编辑过]

前天 13:07
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:371
专家分:865
注 册:2014-6-12
收藏
得分:0 
主要原因是不能用“TRANSFORM”,必须要保留小数点“定位”
前天 19:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10794
专家分:43364
注 册:2014-5-20
收藏
得分:0 
?TRIM(ALLTRIM(TRANSFORM(1200.00,"99999999.99"),"0"," "),".")
?TRIM(ALLTRIM(TRANSFORM(1200,"99999999.99"),"0"," "),".")
前天 20:04
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:371
专家分:865
注 册:2014-6-12
收藏
得分:0 
字符型数值、数值型数值,这样就完美了


[此贴子已经被作者于2025-10-22 10:48编辑过]

昨天 10:46
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:811
专家分:3245
注 册:2018-3-13
收藏
得分:0 
以下是引用kangss在2025-10-22 10:46:44的发言:

字符型数值、数值型数值,这样就完美了

完美吗?试试
?TRIM(ALLTRIM(TRANSFORM(0,"99999999.99"),"0"," "),".")

这家伙很懒,啥也没留下
昨天 10:59
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:513
专家分:376
注 册:2013-10-4
收藏
得分:0 
印象中,我以前不得不写的函数是:

LTrim0x00()
RTrim0x00()
AllTrim0x00()

用来Trim()干净那些C返回的以0x00结尾的字符串。
事关,C对待字符串很随意,直接加一个0x00,就粗暴截断,根本不会管后边有无垃圾字符。
"Hello World!" + 0h00 + "巴拉巴拉……"
VFP是无法直接Trim()干净的。


[此贴子已经被作者于2025-10-22 11:31编辑过]

昨天 11:30
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:371
专家分:865
注 册:2014-6-12
收藏
得分:0 
以下是引用csyx在2025-10-22 10:59:19的发言:
完美吗?试试
?TRIM(ALLTRIM(TRANSFORM(0,"99999999.99"),"0"," "),".")

你这个测试的非常好

a = "0"
b = "1200"
c = "1200.00"

? LTRIM(RTRIM(RTRIM(STR(VAL(a),20,4), '0'), '.'))
? LTRIM(RTRIM(RTRIM(STR(VAL(b),20,4), '0'), '.'))
? LTRIM(RTRIM(RTRIM(STR(VAL(c),20,4), '0'), '.'))

去掉尾部的0主要用于字符型显示,转成json字符串:还是要保留小数点定位
1、dbf中的数值字段,去掉尾部0转成字符型,用:LTRIM(RTRIM(RTRIM(STR(jinjia,20,4), '0'), '.'))
2、字符型字段或字符串:去掉尾部0转成字符型,用:LTRIM(RTRIM(RTRIM(STR(VAL(a),20,4), '0'), '.'))

昨天 11:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10794
专家分:43364
注 册:2014-5-20
收藏
得分:0 
以下是引用csyx在2025-10-22 10:59:19的发言:


完美吗?试试
?TRIM(ALLTRIM(TRANSFORM(0,"99999999.99"),"0"," "),".")

用这种方法只能只抽
? TRIM(TRIM(LTRIM(TRANSFORM(0,"99999999.99")," "),"0"),".")
昨天 11:52
快速回复:【分享】VFP9增强命令TRIM、ALLTRIM、RIGHT
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017446 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved