2015-05-12 4 views
0

В настоящее время у меня есть текстовый файл с более чем 500 строками. (т.е. N: \ Fork \ Кли \ Scripts \ ABC01.VB)VB.NET - функция подстроки, которая перестает читать в первом целое, возможно?

Некоторые из этих имен файлов различаются по длине (т.е. ABC01.VB, ABCDEF123.VB и т.д.) Как я могу идти об использовании подстроки чтобы удалить имя пути, числа и тип файла, оставив только буквы.

Например, обработка N: \ Fork \ Cli \ Scripts \ ABC01.VB и возврат ABC. Или N: \ Fork \ Cli \ Scripts \ ZUBDK22039.VB и возвращается ZUBDK.

Я только был в состоянии получить первые 3 буквы, используя этот код

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.

Вы можете извлечь только буквы (не цифры и другие символы) из имени файла, например:

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 обрабатывает все символы в строке (array) и выбирает только те, которые являются буквами (с использованием метода Char.IsLetter). Выбранные символы преобразуются в массив (строка), который присваивается переменной letters.

Я вижу из вашего последнего комментария, что цифры не могут быть смешаны с буквами (как в моем примере). Однако код должен по-прежнему работать в вашем случае.

+0

Спасибо, это сработало отлично! – Gmac

Смежные вопросы