2016-05-04 62 views
0

昨天我學會用流動的代碼修剪最後一個斜線vb.net之前一切

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

這是真的整齊,因爲它是一個更reliaable /穩定的方式修剪的文件名關閉文件位置是我之前使用...哈哈今天雖然我想反過來我想在最後一個斜槓之前修剪一切,我該怎麼做?

也只是出於好奇心什麼是小寫字母c代表(「\」c)即代碼也能很好地運行嗎?

回答

0

您可以使用拆分()函數或本

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) 
+0

這不適合OP的需求。他們正在尋找修剪文件路徑的所有目錄。因此'cut_at'的值將是'''''',除非文件位於驅動器的根目錄下,'InStr()'函數將返回文件路徑中第一個'''''的位置,而不是最後。至少應該使用'InStrRev()'函數。其次,如果這個代碼被跨平臺使用,'''''只是Windows中的目錄分隔符,而不是Unix或Mac。 –

5

,而不是與子擺弄,您可以使用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,這是this particular overload什麼IndexOf需要,但也有String overload,所以沒有c,它也可以工作。

+0

僅供參考,您需要導入System.IO才能使用Path類或限定命名空間你的代碼。 MSDN:https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx .NET資源:http://referencesource.microsoft.com/#mscorlib/system /io/path.cs,090eca8621a248ee –

+1

VB IDE將提供添加'Imports'語句,前提是有一個對程序集的引用(這對System.IO來說是自動的) – Plutonix

+1

@вʀaᴎᴅᴏƞвєнᴎєƞ是 - 同樣的當然,對於你使用的任何類都適用,但是我並不認爲所有的答案都指出類的存在需要詳細介紹如何引用,導入和使用類。 –

0

一個解決方案是使用LastIndexOf()創建一個子將包含最後slashe後纔有什麼:

Dim fullpath As String = inventorApp.ActiveDocument.FullFileName 

Dim FileName As String = fullPath.Substring(fullPath.LastIndexOf("\")) 

我喜歡這個一個因爲它更一般(即你可以通過替換"\""."來恢復文件擴展名)。但是,如果您確實知道您正在使用文件路徑,則更喜歡James Thorpe的解決方案,請使用System.IO.Path

+0

或者您可以使用['Path.GetExtension'](https://msdn.microsoft.com/en-us/library/system.io.path.getextension(v = vs.110).aspx)。 –

相關問題