标题:如何得到N层目录的最后一层?
只看楼主
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
结帖率:69.81%
 问题点数: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
等 级:论坛游侠
帖 子:325
专家分: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
帖 子:4912
专家分:29900
注 册: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
帖 子:934
专家分: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480325-1-1.html




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

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