易表在线答疑技术与交流用户社区 → [求助]如何去除字符串最后部分


  共有6289人关注过本帖树形打印复制链接

主题:[求助]如何去除字符串最后部分

帅哥哟,离线,有人找我吗?
老宋
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:215 积分:148 威望:0 精华:0 注册:2007/7/18 15:48:00
[求助]如何去除字符串最后部分  发帖心情 Post By:2009/10/30 10:03:00 [只看该作者]

如何设置函数实现将
Aar|Bddd|Case|Danger|Effect
转化为
Aar|Bddd|Case|Danger|

按照分隔符,将分隔符最后的一组数据删除


 回到顶部
帅哥哟,离线,有人找我吗?
lyang70
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:5115 积分:862 威望:0 精华:0 注册:2006/8/15 16:57:00
  发帖心情 Post By:2009/10/30 10:11:00 [只看该作者]

试试:Substitute("Aar|Bddd|Case|Danger|Effect","|" + Split("Aar|Bddd|Case|Danger|Effect","|",Len("Aar|Bddd|Case|Danger|Effect") - Len(Substitute("Aar|Bddd|Case|Danger|Effect","|","")) + 1),"")

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2009/10/30 10:22:00 [只看该作者]

Substitute([第一列],Split([第一列]+"|","|",Len([第一列]+"|")-Len(Substitute([第一列]+"|","|",""))),"")

 回到顶部
帅哥哟,离线,有人找我吗?
老宋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:215 积分:148 威望:0 精华:0 注册:2007/7/18 15:48:00
  发帖心情 Post By:2009/10/31 0:43:00 [只看该作者]

感谢两位版主的回复,思路很特别,但我发现这种算法有个问题,就是当最后一个字符串被其他字符串包含的时候,就会出现替换其他的字符。

例如对于字符串"Aarc|Bddd|Aarb|Danger|Aar",如果用两位的算法,结果都是Aarc|Bdddb|Danger


 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2009/10/31 7:39:00 [只看该作者]

Eval("Substitute("""+Concat([第一列],"/")+""",Split([第一列]+""/|"",""|"",Len([第一列]+""/|"")-Len(Substitute([第一列]+""/|"",""|"",""""))),"""")")

 回到顶部
帅哥哟,离线,有人找我吗?
Czy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2009/10/31 12:34:00 [只看该作者]

Left([第一列],Len([第一列])-Len(Split([第一列],"|",Len([第一列])-Len(Substitute([第一列],"|",""))+1))-1)

 回到顶部
帅哥哟,离线,有人找我吗?
老宋
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:215 积分:148 威望:0 精华:0 注册:2007/7/18 15:48:00
  发帖心情 Post By:2009/11/1 10:20:00 [只看该作者]

没想到几位版主如此热心,发现易表的“易”还是主要体现在版主的平易近人。

wjq1072版主的思路看明白了,但函数不能执行,一执行就死机。
cry版主的函数能用,很清晰,很精炼。

我也想到一种算法,但太长。
Eval("Substitute(Split("+Rept("Substitute(",Len("Aarc|Bddd|Aarb|Danger|Aar")-Len(Substitute("Aarc|Bddd|Aarb|Danger|Aar","|",""))-1)+""""+"Aarc|Bddd|Aarb|Danger|Aar"+""""+Rept(",""|"",""*"",1)",Len("Aarc|Bddd|Aarb|Danger|Aar")-Len(Substitute
("Aarc|Bddd|Aarb|Danger|Aar","|",""))-1)+",""|"",1),""*"",""|"")")

这种切割算法的一个应用分享给大家
把用GetFileName返回的文件名转换成一个路径。易表有关路径的参数只有DocDir();易表文件目录,WinDir();Windows安装目录,SysDir();Windows系统目录.AppDir();易表安装目录.
没有指定目录的功能,对于易表程序的数据备份,可以灵活选择数据目录,可使易表程序呈现给用户的只有运行程序快捷方式和数据目录。


 回到顶部