【问题标题】:trim everything before last slash vb.net在最后一个斜杠 vb.net 之前修剪所有内容
【发布时间】:2016-05-04 13:15:08
【问题描述】:

昨天我学会了使用流动代码从文件位置修剪文件名

    Dim NEWPATH As String = (inventorApp.ActiveDocument.FullFileName)
    NEWPATH = NEWPATH.Substring(0, NEWPATH.fIndexOf("\"c))

这真的很整洁,因为它比我以前使用的方式更可靠/更稳定......哈哈,今天虽然我想要相反,但我想在最后一个斜线之前修剪所有东西我该怎么做?

也只是出于好奇,("\"c) 中的小写 c 是什么意思,即没有它,代码也能正常工作?

【问题讨论】:

    标签: vb.net indexof


    【解决方案1】:

    您可以使用Path class的方法,而不是摆弄子字符串:

    Dim fullpath as String = inventorApp.ActiveDocument.FullFileName
    
    'What you're after now - the filename
    Dim justTheFileName as String = Path.GetFileName(fullpath)
    
    'a replacement for what you're already doing to get the folder name
    Dim justTheFolderName as String = Path.GetDirectoryName(fullpath)
    

    "\"c 中的小写 c 表示您需要 Char 而不是 String,这是 IndexOfthis particular overload 所采用的,但也有 String overload,所以它会没有c 也能正常工作。

    【讨论】:

    • 仅供参考,您需要导入 System.IO 才能使用 Path 类或限定代码中的命名空间。 MSDN:msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx.NET 来源:referencesource.microsoft.com/#mscorlib/system/io/…
    • VB IDE 将提供添加 Imports 语句,前提是有对程序集的引用(System.IO 自动出现这种情况。
    • @вʀaᴎᴅᴏƞвєнᴎєƞ 是的 - 当然,您使用的任何课程也是如此。但是,我不认为所有指出类存在的答案都需要详细介绍如何引用、导入和使用类。
    • @Plutonix 感谢您对此的确认 - 我使用 ReSharper 已经很长时间了,我忘记了 R# 是什么,VS 是什么......
    • @JamesThorpe 我知道你知道Imports 声明是必需的,我只是为了任何可能不知道并且没有像Plutonix 提到的那样使用VS 的未来访问者而添加了该评论。你得到了我的 +1,因为你是正确的答案。
    【解决方案2】:

    你可以使用 split() 函数或者这个

    Dim mystr As String = "Dr. John Smith 123 Main Street 12345"
    Dim cut_at As String = "Smith"
    Dim x As Integer = InStr(mystr, cut_at)
    
    Dim string_before As String = mystr.Substring(0, x - 2)
    Dim string_after As String = mystr.Substring(x + cut_at.Length-1)
    

    【讨论】:

    • 这不适用于 OP 的需求。他们希望从文件路径中删除所有目录。因此cut_at 的值将是\,除非文件位于驱动器的根目录,否则InStr() 函数将返回文件路径中第一个\ 的位置,而不是最后一个。至少应该使用InStrRev() 函数。其次,如果这段代码是跨平台使用的,\ 只是 Windows 中的目录分隔符,而不是 Unix 或 Mac。
    【解决方案3】:

    一种解决方案是使用LastIndexOf() 创建一个仅包含最后一个斜杠之后的子字符串:

    Dim fullpath As String = inventorApp.ActiveDocument.FullFileName
    
    Dim FileName As String = fullPath.Substring(fullPath.LastIndexOf("\"))
    

    我喜欢这个,因为它更通用(即您可以通过将"\" 替换为"." 来恢复文件扩展名)。但是,如果您确定您正在使用文件的路径,则更喜欢 James Thorpe 的解决方案,使用 System.IO.Path

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2012-12-29
    • 2011-11-07
    相关资源
    最近更新 更多