我正在尝试创建一个程序来自动化某个转换过程,这个过程需要将新的播放器模型添加到游戏服务器中,这些游戏服务器目前涉及大量重复的手动工作。
然而,我正在努力克服这个看似简单的一点!用户使用文件对话框在进程开始时选择一个文件,该文件对话框抛出一个目录字符串,如下所示:
“M:\ User \ Documents \ Playermodel Program \ Raw Addon \ Stalker Playermodel \ models \ player \ zelpa \ model.mdl”
我想将此字符串缩短为:
“模型\播放器\ zelpa \ model.mdl”
问题是,在此之前的任何事情都可能发生变化。文件名,以及'models'和实际模型所在的文件夹之间的任何目录都可以!因此,唯一可靠的是/ models /,它将永远存在。
我想做的是取字符串并将所有内容删除到等于“\ models \”的字符串的一部分并删除所有内容,以及第一个“\”。它需要搜索“\ models \”而不是“models”,因为有人可能会有一个名为“playermodels”的文件夹,它会把它扔掉!
我怎样才能做到这一点?对于一个看似简单的问题,我担心它可能有一个非常复杂的解决方案!
答案 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())
这分为" \"并采取最后四个部分。它通过反转列表,取前四个部分,然后再次反转它来完成此操作。然后使用" \"。
将它们连接在一起