Sélection générique de caractères à partir d'un nom de fichier donnéBonjour,
J'essaie de rechercher certains caractères à partir d'un nom de fichier et de sélectionner ces fichiers.
par exemple : nom du fichier : HELLO123_MT_XYZ,
Code:
Pour ( je = 1 , je <= N articles ( des dossiers ) , je ++,
Si ( Contient ( des dossiers [ je ] , "MT" ) , //Entrez les critères de recherche à partir du nom du fichier
Ouvrir ( des dossiers [ je ] ) ;
)
) ;
Code ci-dessus avec "MT" extraira tous les noms de fichiers avec MT comme caractère. Mais comment puis-je sélectionner des fichiers avec un joker ? par exemple : *123*XY*
Re : Sélection de caractères génériques à partir d'un nom de fichier donnéMerci pour les réponses.
Je n'ai pas remarqué que le même caractère se répétait deux fois dans le nom du fichier et qu'il tirait donc tout un tas de fichiers.
J'ai limité la longueur de la chaîne du nom de fichier et je peux maintenant obtenir des fichiers en fonction de critères de recherche.
Merci beaucoup les gars!
Re : Sélection de caractères génériques à partir d'un nom de fichier donnéLes expressions régulières peuvent fournir une solution plus générale.
// Wildcard in a string: *123*XY*
slist = {"HELLO123_MT_XYZ", "HELLO123_MT_Z", "GOODBYE123_MT_XY", "XY_FUBAR_123"};
rx = "(123).*(XY)";
for (i = 1, i <= nitems(slist), i++,
result = regex(slist[i], rx);
print(slist[i] || ": " || char(result));
);Re : Sélection de caractères génériques à partir d'un nom de fichier donnéJe suis confus avec vos entrées. Tout d'abord, clarifions le problème de code. J'ai d'abord fait une erreur dans le code. Et puis j'ai encore foiré. Le code que vous devez utiliser est :
<SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"123"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token operator">&</SPAN> <SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"XY"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token operator">&</SPAN> <SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"XY"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token operator">></SPAN> <SPAN class="token function">Contains</SPAN><SPAN class="token punctuation">(</SPAN> files<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"123"</SPAN> <SPAN class="token punctuation">)</SPAN>
Il n'y a rien de magique dans ce code. Laissez-moi vous expliquer. La fonction Contient() recherche dans une chaîne littérale, dans votre cas, la valeur actuelle de Files[i], en recherchant la valeur du deuxième argument "123". S'il est trouvé, il renvoie la position dans laquelle il a été trouvé. Ainsi, la première utilisation de Contient() s'assure qu'il y a bien la valeur "123". La deuxième utilisation s'assure qu'il y a une valeur de "XY" et la troisième comparaison s'assure que "XY" est trouvé après la valeur de "123". C'est tout ce qu'il fait.
Je m'excuse pour l'erreur de codage.....
Re : Sélection de caractères génériques à partir d'un nom de fichier donnédésolé pour les messages multiples.
Mais si j'utilise le deuxième critère comme " _ 0A" alors je peux obtenir un fichier spécifique à la place lorsque j'utilise "0A" alors il ignore ce critère.
Je suis sûr qu'il me manque quelque chose de très basique.
Merci,
Chintan
Re : Sélection de caractères génériques à partir d'un nom de fichier donnéEn fait, si j'utilise ci-dessous -
Si ( Contient ( des dossiers [ je ] , "123" ) > 0 & Contient ( des dossiers [ je ] , "XY" ) > Contient ( des dossiers [ je ] , "123" ) ,
Je peux obtenir un résultat. mais o le problème que j'ai trouvé est, si le nom du fichier est -
1. HELLOABC_0A_H2ABC
2. HELLOABC_1D_H2ABC
Si je sélectionne "ABC" et "0A", alors j'obtiens tous les fichiers avec "ABC" alors que si j'utilise "ABC" et "1D", j'obtiens un fichier spécifique qui contient les deux caractères dans le nom du fichier.
Comment fait-il la différence entre 0 Un contre 1 D? Ils doivent tous deux être traités comme une chaîne.
Re : Sélection de caractères génériques à partir d'un nom de fichier donnéoups, mon erreur, ça devrait être:
If( Contains( files[i], "123" ) > 0 & Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)
Re : Sélection de caractères génériques à partir d'un nom de fichier donnétxnelson : Merci pour la réponse rapide.
pour une raison quelconque, il renvoie toujours tous les fichiers avec "123" et ne considère pas "XY" comme critère de recherche.
Cela a-t-il quelque chose à voir avec plusieurs delims ?
Re : Sélection de caractères génériques à partir d'un nom de fichier donnéIf( Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)