注册 登录
编程论坛 VFP论坛

ALLTRIM去不掉的空格,还有什么办法??数据已上传!!

hjlali 发布于 2021-08-20 15:06, 3616 次点击
通过命令:
? ALLTRIM(lxfs)+'aa'
只有本站会员才能查看附件,请 登录

发现还有空格

请问该如何处理?


只有本站会员才能查看附件,请 登录
15 回复
#2
yafengliang2021-08-20 15:14
用allt(transform(lxfs))试试

[此贴子已经被作者于2021-8-20 15:16编辑过]

#3
fyyylyl2021-08-20 15:18
后面好像是一个半角+一个全角的空格,试试用strtran()

[此贴子已经被作者于2021-8-20 15:22编辑过]

#4
厨师王德榜2021-08-20 15:33
不是空格,并非看起来空的位置,就一定是空格,还是要验证他到底是什么字符.
你可以试试  ?ALLTRIM(  CHRTRAN(lxfs, CHR(9), CHR(32))  )+'aa'
看是不是你想要的?
#5
hjlali2021-08-20 15:44
以下是引用yafengliang在2021-8-20 15:14:14的发言:

用allt(transform(lxfs))试试

这个不行,结果是一样的,你可以试试,数文件已经上传到附件了。
#6
hjlali2021-08-20 15:46
以下是引用fyyylyl在2021-8-20 15:18:59的发言:

后面好像是一个半角+一个全角的空格,试试用strtran()

半角、全角怎么表示?我这个lxfs字段的长度不一样,替换起来似乎有点不好操作。
#7
hjlali2021-08-20 15:53
以下是引用厨师王德榜在2021-8-20 15:33:41的发言:

不是空格,并非看起来空的位置,就一定是空格,还是要验证他到底是什么字符.
你可以试试  ?ALLTRIM(  CHRTRAN(lxfs, CHR(9), CHR(32))  )+'aa'
看是不是你想要的?

你这个结果是我想要的,就是有点复杂了,不过能解决问题!
#8
吹水佬2021-08-20 16:18
ALLTRIM(lxfs,0h0920)+"aa"
#9
xuminxz2021-08-20 16:31
后面是制表符
#10
hjlali2021-08-20 16:41
以下是引用xuminxz在2021-8-20 16:31:36的发言:

后面是制表符

到底怎么判断是什么字符的呢?制表符如何表示?麻烦说详细点,谢谢了!!
#11
hjlali2021-08-20 16:43
回复 楼主 hjlali
这里统一感谢各位热心人的解答,让我又进步了一点,真是越来越喜欢这个论坛了。原本以为论坛这么老了,没什么人会来这里回答问题了,没想到这里还有这么一片热心的净土,非常感谢各位,我也将我所学到的知识反哺到本论坛。
#12
xuminxz2021-08-20 16:55
?asc(subst(lxfs,12,1)) 显示9,为tab
REPLACE lxfs WITH STRTRAN(lxfs,CHR(9),'') all
删除制表符
#13
hjlali2021-08-20 18:30
以下是引用吹水佬在2021-8-20 16:18:26的发言:

ALLTRIM(lxfs,0h0920)+"aa"

你这个方法简单好用,请问你这个是什么原理啊?0h0920是什么意思

[此贴子已经被作者于2021-8-20 18:53编辑过]

#14
hjlali2021-08-20 18:42
以下是引用xuminxz在2021-8-20 16:55:25的发言:

?asc(subst(lxfs,12,1)) 显示9,为tab
REPLACE lxfs WITH STRTRAN(lxfs,CHR(9),'') all
删除制表符

谢谢!!这下就彻底明白了,太感谢大家的帮助了!
#15
sdta2021-08-20 20:07
**非可见字符的判断
CLEAR
CLOSE DATABASES
USE 去不掉的空格
* 以第一条记录为例:
FOR lnj = 1 TO LENC(lxfs)
    ? lnj, ASC(SUBSTRC(lxfs, lnj, 1))
ENDFOR
RETURN

显示结果
只有本站会员才能查看附件,请 登录

从显示结果中可以看到第12个字符的ASCII码为 9 ,说明是不可见字符,可用下面代码删除。
REPLACE LXFS WITH STRTRAN(LXFS, CHR(9), "") ALL
#16
hjlali2021-08-21 18:18
以下是引用sdta在2021-8-20 20:07:01的发言:

**非可见字符的判断
CLEAR
CLOSE DATABASES
USE 去不掉的空格
* 以第一条记录为例:
FOR lnj = 1 TO LENC(lxfs)
    ? lnj, ASC(SUBSTRC(lxfs, lnj, 1))
ENDFOR
RETURN

显示结果

从显示结果中可以看到第12个字符的ASCII码为 9 ,说明是不可见字符,可用下面代码删除。
REPLACE LXFS WITH STRTRAN(LXFS, CHR(9), "") ALL

高手,太厉害了
1