| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1990 人关注过本帖
标题:如何得到N层目录的最后一层?
只看楼主 加入收藏
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
结帖率:70%
收藏
 问题点数:0 回复次数:5 
如何得到N层目录的最后一层?
例如目录路径为“C:\Documents and Settings\Administrator\桌面\数据\AAAA\BBBB\”,如何在text中得到“BBBB”?

或者说字符串“C:\Documents and Settings\Administrator\桌面\数据\AAAA\BBBB\”,如何在text中得到“BBBB”?

需要注意的是,目录层数不一定。
搜索更多相关主题的帖子: 目录 and 桌面 数据 text 
2017-08-28 13:10
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
经过自己的琢磨,已经自己解决了。

Dim ss2() As String

ss2 = Split(Text1.Text, "\")

MsgBox = ss2(Len(Text1.Text) - Len(Replace(Text1.Text, "\", "")) - 1)
2017-08-28 13:39
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
直接显示,就是一行代码。当然,你的也只是二行代码
'从右第二个字符向左查找 \ 。然后从这个位置+1取字符串。 replace 是去掉可能存在的 \
MsgBox Replace(Mid(s, InStrRev(s, "\", Len(s) - 1) + 1), "\", "")


注:
1、s 等于你的 text1.text
2、如果定义为变量的话,就不要使用 replace ,而使用 IF 去掉。二行代码
  s2 = Mid(s, InStrRev(s, "\", Len(s) - 1) + 1)           '得到路径
  If Right(s2, 1) = "\" Then s2 = Left(s2, Len(s2) - 1)   '去尾部 \

3、你的代码发现BUG。
  当输入的路径没有最后的 \  时,你的代码结果错误。
  如输入:C:\Documents and Settings\Administrator\桌面\数据\AAAA\BBBB 时,
  你的代码返回 AAAA 。

4、你的代码修改:
第一行不变。第二行,如果是直接显示,那么改成:
ss2 = Split(text1.text, "\")
MsgBox IIf(ss2(UBound(ss2)) = "", ss2(UBound(ss2) - 1), ss2(UBound(ss2)))   '如果最后一个元素为空白,返回前一个元素,否则返回最后一个元素

如果给变量,用IF语句重写吧。IIF命令开销更大,它是函数。
程序代码:
If ss2(UBound(ss2)) = "" Then
    s2 = ss2(UBound(ss2) - 1)
Else
    s2 = ss2(UBound(ss2))
End If








[此贴子已经被作者于2017-8-28 16:54编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2017-08-28 16:48
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:0 
同意风版的方法,直接用InStrRev查找最后一个“/”(如果路径最后是“/”,那就是找最后第二个)
2017-08-28 17:17
mclhr1996
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2017-9-17
收藏
得分:0 
    s = "c:\aa\bb\"
        ary = Split(s, "\")
        MsgBox ary(UBound(ary) - 1)
2017-09-18 11:14
csl591
Rank: 4
等 级:贵宾
威 望:10
帖 子:78
专家分:92
注 册:2009-2-5
收藏
得分:0 
5楼的代码最简洁。
2017-12-11 14:14
快速回复:如何得到N层目录的最后一层?
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018728 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved