Comment obtenir tous les noms de fichiers sur le Répertoire dans VB.NET
J'en veux pour preuve tous les noms de fichiers PDF qui a "33" dans n'importe quelle position.
exemple de fichier pdf liste sur PDFFiles Dossier
1111.pdf
3311.pdf
2222.pdf
2331.pdf
1234.pdf
1233.pdf
J'ai besoin d'obtenir le résultat comme ceci,c'est quelque chose comme générique %33% sur sql
3311.pdf
2331.pdf
1233.pdf
J'ai essayé celui
Me.ListBox1.Items.AddRange(Directory.GetFiles("C:\PDFFiles", "*33*" & ".PDF", SearchOption.AllDirectories))
mais il continue d'afficher tous les fichiers pdf.
1111.pdf
3311.pdf
2222.pdf
2331.pdf
1234.pdf
1233.pdf
et ce
Me.ListBox1.Items.AddRange(Directory.GetFiles("C:\PDFFiles", "*33" & ".PDF", SearchOption.AllDirectories))
mais seulement obtenir
1233.pdf //this get all filename that ends with 33
Grâce en ce qui Concerne
- et pourquoi ne pas le haut de la ligne de code du travail en joignant les caractères jokers autour de la 33??? Je peux voir pourquoi la ligne de fond renvoie uniquement une seule file.
- Pourquoi un downvote ?
Vous devez vous connecter pour publier un commentaire.
Le modèle correspondant à l'algorithme pour des caractères génériques sont assez étranges, si vous êtes habitué aux expressions régulières. Il y a beaucoup d'histoire derrière elle, de revenir par le biais de Windows 3, MS-DOS, le CP/M (un système d'exploitation pour les 8-bits machines) et RSX (un système d'exploitation 16 bits DÉC machines). Avec de lourds emprunts entre eux, y compris le générique de comportement. Certains accidentelle de points communs btw, David Cutler a été l'architecte principal derrière le premier et le dernier.
Anyhoo,
*33*
n'est pas d'aller travailler. Vous aurez besoin d'appliquer votre propre filtre. Recherche pour*.*
ou*.pdf
et utiliser le Chemin.GetFileNameWithoutExtension() et String.Contient() pour trouver les correspondances.J'ai remarqué ce comportement trop lors de l'utilisation de plus d'un
*
.Je l'ai résolu en obtenir tous les noms de fichiers et de filtrage puis les noms exacts par l'utilisation de LINQ:
Il vous manque
*
à la fin de"*33"
, mettre une étoile de plus à la fin de comme"*33*"
.Votre expression courante : "*33" & ".PDF" les moyens, Tous les noms de fichier qui se termine par
33.PDF
c'est pourquoi vous obtenez1233.pdf
et pas2331.pdf
EDIT:
Répertoire.GetFileName()
Nous avons découvert que
Filtre
*___*
fonctionne si la chaîne est de longueur supérieure ou égale à 4.Donc, si je veux obtenir tous les enregistrements qui a test nom de la valeur:
Mon filtre doit être:
"*test" & ".PDF"
il va donner le résultat souhaitéFYI