在程序里传进来了一个完整的地址,而我只想要最后的文件名,应该怎样把前面不需要的部分去掉呢?例如E:\cim\main\test.asp 只取test.asp这部分。

解决方案 »

  1.   

    s = "E:\cim\main\test.asp"
        MsgBox Right(s, Len(s) - InStrRev(s, "\"))
      

  2.   

    巧截字符串(探讨用InStrRev函数配合Right/Left函数截取字符串)
    VB的Right函数、Left函数提供了从左或从右在已知字符串中截取指定数量的未知字符串的功能,不过要获取某个特定字符前面或者后面的字符串,情形就不一样了,比如我们要在字符串"E:\MyFavourite\001\xxx.xxx"中截取最后一个"\"后面的字符串亦即文件名,单单用上述几个函数是难以实现的,因为文件名的字节数难以确定。这时函数InStrRev就派上用场了。InStrRev返回一个字符串在另一个字符串出现的位置,充分利用它可以轻而易举地截取所要的内容。
    下面举个实例来加以说明,希望大家可以从中得到启示。本例仅需要一个TextBox控件。Private Sub Form_Load() 
    '声明已知字符串的字节数、"\"所在位置的变量
    Dim n As Integer, m As Integer
    '声明字符串变量
    Dim i As String, j As String
    j = "E:\Music\MyFavourite\001\Spring.mp3" '已知字符串初值
    i = "\" '要查找的指定字符
    For n = 1 To Len(j) '这里用了Len函数来计算已知字符串的字节数
    m = InStrRev(j, i, -1) '"\"所在的位置(其中的-1是默认的)
    Next n
    '显示最后一个"\"后面的字符串
    Text1.Text = Right(j, Len(j) - m) 
    End Sub运行程序,文本框中的是不是明明白白地躺着"Spring.mp3"?试着改一改j变量,得到的结果是不是预期的?  
      

  3.   

    Dim s As String
    s = Split("E:\cim\main\test.asp", "\")(UBound(Split("E:\cim\main\test.asp", "\")))
    MsgBox s