如何向后移除部分字符串?

时间:2016-03-22 00:35:11

标签: vb.net visual-studio

我有一个带有此值的vb字符串:c:\program\bin\files

我需要将此字符串转换为此值:files

我需要的只是路径的最后一个文件夹。

路径不固定。它可以是:d:\app\win\7\sp1\update

在这种情况下,字符串必须转换为:update

我认为应该通过向后搜索字符串第一次出现\并删除它之前的所有内容来完成,包括\本身。

但显然我不知道该怎么做。 :)

谢谢!

修改

我需要用它来填充ComboBox ......

这就是我正在使用的:

ComboBox1.Items.AddRange(IO.Directory.GetDirectories(appPath & "\Updates\Version"))

它给了我一个ComboBox,如:

c:/program/Updates/Version/Beta1
c:/program/Updates/Version/Beta2
c:/program/Updates/Version/Beta3
c:/program/Updates/Version/Beta4

我想让ComboBox像:

Beta1
Beta2
Beta3
Beta4

2 个答案:

答案 0 :(得分:2)

不要试图自己拆开字符串,而是查看System.IO.Path类。

在您的情况下,GetFileName方法可以执行您想要的操作:

  lastFolder = System.IO.Path.GetFileName(path)

要使用名称填充组合框,可以使用LINQ查询,如下所示:

ComboBox1.Items.AddRange(
  From path 
  In IO.Directory.GetDirectories(IO.Path.Combine(appPath, "Updates\Version"))
  Select IO.Path.GetFileName(path))

此外,在将路径片段连接在一起时,请尝试使用Path.Combine方法。它比加入字符串更安全。

答案 1 :(得分:1)

在VBScript中,这是标记的,你有两个选择。这是在将任何代码编辑到问题之前编写的。

使用InstrR Instr,但是从字符串的前面开始。

您还有StrReverse可以反转字符串。

  

<强> InStrRev

     

从字符串的末尾返回一个字符串在另一个字符串中出现的位置。

InStrRev(string1, string2[, start[, compare]])
     

<强> StrReverse

     

返回一个字符串,其中指定字符串的字符顺序颠倒过来。

StrReverse(string1)

如果使用文件系统对象,它有一个方法可以专门做你想要的。

  

GetParentFolderName 方法

     

返回一个字符串,其中包含指定路径中最后一个组件的父文件夹的名称。

Set fso = CreateObject("Scripting.FileSystemObject")
object.GetParentFolderName(path)