在VB中有选择地操作字符串

时间:2014-11-12 18:21:12

标签: vb.net string search

我正在尝试创建一个程序来自动化某个转换过程,这个过程需要将新的播放器模型添加到游戏服务器中,这些游戏服务器目前涉及大量重复的手动工作。

然而,我正在努力克服这个看似简单的一点!用户使用文件对话框在进程开始时选择一个文件,该文件对话框抛出一个目录字符串,如下所示:

“M:\ User \ Documents \ Playermodel Program \ Raw Addon \ Stalker Playermodel \ models \ player \ zelpa \ model.mdl”

我想将此字符串缩短为:

“模型\播放器\ zelpa \ model.mdl”

问题是,在此之前的任何事情都可能发生变化。文件名,以及'models'和实际模型所在的文件夹之间的任何目录都可以!因此,唯一可靠的是/ models /,它将永远存在。

我想做的是取字符串并将所有内容删除到等于“\ models \”的字符串的一部分并删除所有内容,以及第一个“\”。它需要搜索“\ models \”而不是“models”,因为有人可能会有一个名为“playermodels”的文件夹,它会把它扔掉!

我怎样才能做到这一点?对于一个看似简单的问题,我担心它可能有一个非常复杂的解决方案!

2 个答案:

答案 0 :(得分:1)

如果我正确关注,您可以使用String.IndexOf查找\models\部分,使用String.Substring来提取您感兴趣的路径部分:

Dim fileName = "M:\User\Documents\Playermodel Program\Raw Addon\Stalker Playermodel\models\player\zelpa\model.mdl"
Dim partPath = fileName.Substring(fileName.IndexOf("\models\") + 1)

答案 1 :(得分:0)

因为LINQ非常有趣......

Dim s As String = "M:\User\Documents\Playermodel Program\Raw Addon\Stalker Playermodel\models\player\zelpa\model.mdl"
Dim returnValue As String = String.Join("\", s.Split("\".ToCharArray()).Reverse().Take(4).Reverse())

这分为" \"并采取最后四个部分。它通过反转列表,取前四个部分,然后再次反转它来完成此操作。然后使用" \"。

将它们连接在一起