Retrieve part of a string (split or indexOf) [duplicate]

1

I have a folder structure like this:

bco_img/3/foto_produto/
bco_img/3/foto_produto/tb/
bco_img/4/foto_produto/
bco_img/4/foto_produto/tb/
etc...

I want to recover the folder / 3 / after / 4 / and also the name of the photos that are inside each folder, eg: folder: / 3 / foto: xyz.jpg I did something like this:

string url_Fonte = Server.MapPath("BCO_IMG");

DirectoryInfo diretorio = new DirectoryInfo(url_Fonte);
   FileInfo[] Arquivos = diretorio.GetFiles("*.jpg", SearchOption.AllDirectories);
      foreach (FileInfo fileinfo in Arquivos)
      {
       string nome_dir =  fileinfo.DirectoryName;
       string v1 = nome_dir.IndexOf(@"BCO_IMG\").ToString();
    // aqui qual é o melhor? fazer uma função para recuperar pelo indexOF ou criar um Array com Split() ?

      string nome_foto = fileinfo.Name;
      }
    
asked by anonymous 13.11.2014 / 19:48

2 answers

0

I got the link from Maniero

 string nome_dir =  fileinfo.DirectoryName;
string[] Valores = nome_dir.ToString().Split(new char[] { '\' });
var palavra = Valores[7];

I think with regular expression would also

Regex regex = new Regex("^~/BCO_IMG/(?<output>[Z0-9]+)/*/.*$");
GroupCollection capturas = regex.Match(source).Groups;
Response.Write(capturas["output"]);
    
13.11.2014 / 20:14
0

By the way, the format " url_Fonte / sua pasta / etc. / nomearquivo " is fixed. So ..

string subdir = nome_dir.ToLower().Replace(url_Fonte.ToLower() + "/", "").Split('/')[0];
// ou 
string subdir = nome_dir.Split('/')[1];

Next, you can wrap the subdir of the bars ( "/" + subdir + "/" ).

To get the file name:

string nomearquivo = nome_dir.Split('/').ToList().Last();
// ou
string sub = nome_dir.Split('/');
string nomearquivo = sub.IndeOf(sub.Length - 1);
    
13.11.2014 / 20:02