从文件名字符串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)