【发布时间】:2015-10-07 14:55:43
【问题描述】:
我试图在用户选择他们的网名时显示他们的图像,但是当我试图找到他们的图像时,我收到一条错误消息,例如;
Could not find file 'S:\Picture\Chris .jpg'.
正如您可能知道的那样,有很多空格,所以我尝试了这个方法,将 netname 中的每个空格都替换为“a”;
string dbfQuery = "SELECT em_pplid, em_name, STRTRAN(em_netname, ' ', 'a'), em_surname FROM employs WHERE em_netname NOT LIKE ''";
当然,我开始收到这样的新错误消息;
Could not find file 'S:\Picture\Chrisaaaaaaaaaaaaaaa.jpg'.
您马上会认为将STRTRAN(em_netname, ' ', 'a') 更改为STRTRAN(em_netname, ' ', '') 会删除所有空格。虽然这在一定程度上确实有效,但首先如果有多个 Chris,例如“ChrisB”和“ChrisC”,它们现在都变为“Chris”。
为此添加一些空格并没有删除,例如我仍然收到错误消息;
Could not find file 'S:\Picture\YenT .jpg'.
即在某些情况下还剩下一个空格。
这有什么原因吗?我是否错误地使用了 STRTRAN?我认为可能的一件事是,除了空格之外,还有其他隐藏的、不可打印的字符,但是用“a”替换它们不会留下空格吗?
【问题讨论】:
-
您是否尝试过 TRIM 和/或 ALLTRIM 函数来删除空格?此外,如果这仅与 VfP 相关,您能否删除其他数据库标签。
-
@PaulF, trim(), alltrim() 在 VFP 表中也不起作用(除非您将其转换为 varchar 值)。 VFP 列是固定大小的。
-
@CetinBasoz:我忘记了查询中会发生这种情况。现在我查看我拥有的旧代码,我发现它需要在结果上完成。
-
@PaulF 我确实尝试过 TRIM 和 LTRIM/RTRIM,但没有任何效果。根据 Cetin 的回答,通过 C# 实现我想要的目标很简单,而不是尝试修改查询。
标签: c# visual-foxpro dbf