Selezione di caratteri jolly di caratteri da un determinato nome di fileCiao,
Sto cercando di cercare determinati caratteri da un nome di file e selezionare quei file.
ad esempio: nome file: HELLO123_MT_XYZ,
Codice:
Per ( io = 1 , io <= N articoli ( File ) , io ++,
Se ( Contiene ( File [ io ] , "MT" ) , //Inserisci i criteri di ricerca dal nome del file
Aprire ( File [ io ] ) ;
)
) ;
Sopra il codice con "MT" estrarrà tutti i nomi di file con MT come carattere. Ma come posso selezionare i file con caratteri jolly? ad esempio: *123*XY*
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di fileGrazie per le risposte.
Non ho notato che avevo lo stesso carattere ripetuto due volte nel nome del file e quindi stava estraendo un intero gruppo di file.
Ho limitato la lunghezza della stringa del nome del file e ora posso ottenere i file in base ai criteri di ricerca.
Grazie mille ragazzi!
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di fileLe espressioni regolari possono fornire una soluzione più generale.
// 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));
);Ri: Selezione di caratteri jolly di caratteri da un determinato nome di fileSono confuso con le tue voci. Innanzitutto, chiariamo il problema del codice. Inizialmente ho fatto un errore nel codice. E poi ho sbagliato di nuovo. Il codice che devi utilizzare è:
<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>
Non c'è niente di magico in questo codice. Lascia che te lo spieghi. La funzione Contains() cerca in una stringa letterale, nel tuo caso, il valore corrente di Files[i], cercando il valore del secondo argomento "123". Se trovato restituisce la posizione in cui è stato trovato. Quindi il primo utilizzo di Contains() fa in modo che ci sia il valore "123". Il secondo utilizzo assicura che ci sia un valore di "XY" e il terzo confronto assicura che "XY" venga trovato dopo il valore di "123". Questo è tutto ciò che sta facendo.
Mi scuso per l'errore di codifica.....
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di filescusa per più post.
Ma se uso il secondo criterio come " _ 0A", allora posso ottenere un file specifico invece quando uso "0A", quindi ignora questo criterio.
Sono sicuro che mi manca qualcosa di molto semplice.
Grazie,
Chintano
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di fileIn realtà se uso sotto -
Se ( Contiene ( File [ io ] , "123" ) > 0 & Contiene ( File [ io ] , "XY" ) > Contiene ( File [ io ] , "123" ) ,
Posso ottenere risultati. ma oh Il problema che ho riscontrato è che se il nome del file è -
1. CIAOABC_0A_H2ABC
2. CIAOABC_1D_H2ABC
Se seleziono "ABC" e "0A", ottengo tutti i file con "ABC" mentre se utilizzo "ABC" e "1D", ottengo un file specifico che contiene entrambi i caratteri nel nome del file.
Come si distingue tra 0 A vs 1 D? Entrambi dovrebbero essere trattati come stringhe.
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di fileoops, errore mio, dovrebbe essere:
If( Contains( files[i], "123" ) > 0 & Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di filetxnelson: Grazie per la pronta risposta.
per qualche motivo restituisce ancora tutti i file con "123" e non considera "XY" come criterio di ricerca.
Ha a che fare con più delimitazioni?
Ri: Selezione di caratteri jolly di caratteri da un determinato nome di fileIf( Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)