2009-11-23 3 views
1

У меня есть следующее имя файл:разделение имени файла - подстрока?

SCO_InsBooking_1.pdf

SCO_InsBooking_10.pdf

SCO_InsBooking_100.pdf

SCO_InsBooking_1000.pdf

Я чтение имени файла с помощью FileInfo и хотят чтобы разбить его, поэтому я получаю только 1, 10, 100 или 1000 чисел, как бы я мог это достичь?

ответ

5

Использование регулярных выражений:

string number = Regex.Match("SCO_InsBooking_1000.pdf", @"\d+").Value; 

Если предположить, что никакой другой номер не присутствует в имени файла.

4
filename = filename.Substring(filename.lastIndexOf("_")+1); 
filename = filename.Substring(0, filename.indexOf(".")); 

Альтернативно

filename = Regex.Replace(filename, "_(\d+).pdf$", "$1"); 
1
string number = "SCO_InsBooking_1.pdf".split('_')[2].split('.')[0]; 

Конечно, было бы лучше с некоторыми проверки границ, чтобы избежать исключения из индекса.

+0

+1 для раскола(), сценарий использования Учебника им. – Mizipzor

0

Вы можете сделать это с помощью регулярного выражения:

Regex.Match(filename, @".*_(\d+).pdf").Groups[1].Value 
0

Вы можете использовать string.replace()

using System.Collections.Generic; 

namespace strings1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      List<string> names = new List<string> { 
       "SCO_InsBooking_1.pdf", 
       "SCO_InsBooking_10.pdf", 
       "SCO_InsBooking_100.pdf", 
       "SCO_InsBooking_1000.pdf" }; 

      List<string> numbers = new List<string>(); 
      foreach (string item in names) 
      { 
       numbers.Add(item.Replace("SCO_InsBooking_", string.Empty).Replace(".pdf",string.Empty)); 
      } 
     } 
    } 
} 
Смежные вопросы