从文件名字符串vb.net获取\和\部分之间的文本

从文件名字符串vb.net获取\和\部分之间的文本,vb.net,string,directory,strip,Vb.net,String,Directory,Strip,我需要获得\&\部分之间的所有内容的值 例如: `XamoutOFdirectorys\THIS IS WHAT I WANT\PARTS` resulting in the text, THIS IS WHAT I WANT in dir1\dir2\THIS IS WHAT I WANT\PARTS I want the text THIS IS WHAT I WANT and not dir2\THIS IS WHAT I WANT 我怎样才能做到 原因是我需要知道在零件目录之前

我需要获得\&\部分之间的所有内容的值

例如:

`XamoutOFdirectorys\THIS IS WHAT I WANT\PARTS`

resulting in the text,  THIS IS WHAT I WANT

in dir1\dir2\THIS IS WHAT I WANT\PARTS

I want the text THIS IS WHAT I WANT and not dir2\THIS IS WHAT I WANT
我怎样才能做到

原因是我需要知道在零件目录之前找到的文件名是什么,而不管在零件目录之前和之后找到了多少个目录

我能做到的最接近的是

        Dim text As String = "fat\dir1\dir2\PARTS\bat"
    Dim str As String = text.Split("\"c, "\PARTS"c)(1)
    MsgBox(str)

如果路径变量类型为字符串。您可以在路径中找到“\PARTS”,在路径中获得起始索引A。然后找到A前面最后一个“\”的另一个索引B。使用子字符串函数在path变量的范围[B,A]之间获得所需的值:

Dim str As String = "fat\dir1\XamoutOFdirectorys\_THIS IS WHAT I WANT\PARTS\bat"
Dim beginIdx, endIdx As Integer
endIdx = str.LastIndexOf("\PARTS") - 1
beginIdx = str.LastIndexOf("\", endIdx - 1) + 1
Dim result = str.Substring(beginIdx, endIdx - beginIdx + 1)
顺便说一下,还有更优雅的方法,比如正则表达式。但我真的建议你应该阅读MSDN关于字符串的内容,弄脏你的手,自己找到解决方案。关于堆栈溢出中的“分割路径”,也有很多解决方案,您可以在理解该解决方案后对其进行更改。致以最良好的祝愿

如下所示的正则表达式: 它可以在现实世界中工作,并支持所有可能的路径版本(在windows系统中测试)

以及正则表达式的状态机说明

\\([^\\]+)\\PARTS

[Debuggex演示](

试试看

它应该返回一个数组,每个文本在
“\”
之间。然后您可以搜索文本
“PARTS”
,并获取上一个索引

Split -> [dir1, dir2, your text, PARTS]

index of PARTS = 3

index of your text = 2

我真的不知道
vb.net
,但我会用任何其他语言这样做。

有关文件和目录,请参阅。问题是如何在
.net
中这样做。另外,您的链接是西班牙语文档。Stack Overflow是一个英语网站,以后请参考英语文档:)
String.Split()<代码>分割()/代码>过时了,在旧版本的VB中使用。@ SmitTy:不再是西班牙语了。@ P3TCH答案不考虑真实世界中所有可能的条件,如果文件夹的名称有“Y”、“-”、空白和其他语言字符的特殊字符呢?
    Dim str As String = "fat\dir1\dir2\PARTS\bat"
    Dim dir As Match = Regex.Match(str, "\\([A-Za-z0-9\-]+)\\PARTS")
    MsgBox(dir.Groups(1).ToString)
    Dim str As String = "fat\dir1\dir2\PARTS\bat"
    Dim dir As Match = Regex.Match(str, "\\([A-Za-z0-9\-]+)\\PARTS")
    MsgBox(dir.Groups(1).ToString)