2015-05-12 28 views
0

我目前有一個文本文件,有超過500行的路徑。 (即N:\叉\ CLI \腳本\ ABC01.VB)VB.NET - 停止讀取第一個整數的子字符串函數,可能嗎?

一些文件名的長度不同(即ABC01.VB,ABCDEF123.VB等) 我如何去使用子函數刪除路徑名,數字和文件類型,只留下字母。

例如,處理N:\ Fork \ Cli \ Scripts \ ABC01.VB,並返回ABC。 或N:\ Fork \ Cli \ Scripts \ ZUBDK22039.VB並返回ZUBDK。

我只能夠檢索使用此代碼

Dim comp As String = sLine.Substring(28, 3) 
    sw.WriteLine(comp) 
+2

一個字符串永遠不會包含整數文本。您可以使用'System.IO.Path.GetFileNameWithoutExtension()'將其修剪爲名稱,然後根據需要去除*數字*。 – Plutonix

+0

在您的示例中,數字總是在文件名的末尾。如果路徑類似於N:\ Fork \ Cli \ Scripts \ AB42Cde01.VB,您想要執行什麼操作? – Blackwood

+0

@Blackwood,路徑總是字母后跟數字,它從不偏離特定佈局。 – Gmac

回答

2

由於Plutonix指出,隔離的文件名從路徑是System.IO.Path.GetFileNameWithoutExtension的最佳途徑前3個字母。

您可以提取只是從文件名中的字母(不數字或其它字符)是這樣的:

Dim myPath As String = "N:\Fork\Cli\Scripts\AB42Cde01.VB" 

Dim filename As String = System.IO.Path.GetFileNameWithoutExtension(myPath) 
Dim letters As String = filename.Where(Function(c) Char.IsLetter(c)).ToArray 

上述代碼設置letters以ABCDE。

代碼依賴於字符串被視爲像字符數組這樣的事實。 Where方法處理字符串(數組)中的所有字符,並僅選擇字母(使用Char.IsLetter方法)。選定的字符將轉換爲分配給letters變量的數組(字符串)。

我從你的最新評論中看到,數字不能與字母混合(如我的例子)。但是,代碼仍然適用於您的情況。

+0

謝謝,它工作完美! – Gmac

相關問題