2009-11-23 7 views
1

j'ai le nom de fichier suivant:scinder un nom de fichier - sous-chaîne?

SCO_InsBooking_1.pdf

SCO_InsBooking_10.pdf

SCO_InsBooking_100.pdf

SCO_InsBooking_1000.pdf

je une lecture du nom de fichier à l'aide FileInfo et que vous voulez pour le diviser afin que je ne reçois que le nombre de 1, 10, 100 ou 1000 comment j'achèterais cela?

Répondre

5

Utilisation d'expressions régulières:

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

En supposant qu'aucun autre numéro est présent dans le nom du fichier.

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

Vous pouvez également

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

Bien sûr, ce serait mieux avec des limites de contrôle pour éviter des exceptions d'index.

+0

+1 pour split(), scénario d'utilisation de schoolbook imo. – Mizipzor

0

Vous pouvez le faire avec une expression régulière:

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

Vous pouvez utiliser 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)); 
      } 
     } 
    } 
}