Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenHallo,
Ich versuche, bestimmte Zeichen in einem Dateinamen nachzuschlagen und diese Datei auszuwählen.
zum Beispiel: Dateiname: HELLO123_MT_XYZ,
Code:
Für ( ich = 1 , ich <= N Artikel ( Dateien ) , ich ++,
Wenn ( Enthält ( Dateien [ ich ] , „MT“ ) , //Suchkriterien anhand des Dateinamens eingeben
Offen ( Dateien [ ich ] ) ;
)
) ;
Obiger Code mit „MT“ ruft alle Dateinamen mit MT als Zeichen ab. Aber wie kann ich Dateien mit Platzhalter auswählen? zum Beispiel: *123*XY*
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenVielen Dank für die Antworten.
Mir ist nicht aufgefallen, dass sich dasselbe Zeichen im Dateinamen zweimal wiederholt und daher eine ganze Reihe von Dateien abgerufen wurden.
Ich habe die Zeichenfolgenlänge des Dateinamens begrenzt und kann jetzt Dateien basierend auf Suchkriterien abrufen.
Vielen Dank Jungs!
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenReguläre Ausdrücke können eine allgemeinere Lösung bieten.
// 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));
);Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenIch bin mit Ihren Einträgen verwirrt. Lassen Sie uns zunächst das Codeproblem klären. Ich habe zunächst einen Fehler im Code gemacht. Und dann habe ich es wieder vermasselt. Der Code, den Sie verwenden müssen, ist:
<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>
An diesem Code ist nichts Magisches. Lass es mich erklären. Die Funktion „Contains()“ durchsucht eine Literalzeichenfolge, in Ihrem Fall den aktuellen Wert von „Files[i]“, und sucht nach dem Wert des zweiten Arguments „123“. Wenn es gefunden wird, wird die Position zurückgegeben, an der es gefunden wurde. Die erste Verwendung von Contains() stellt also sicher, dass der Wert „123“ vorhanden ist. Die zweite Verwendung stellt sicher, dass es einen Wert von „XY“ gibt und der dritte Vergleich stellt sicher, dass „XY“ nach dem Wert „123“ gefunden wird. Das ist alles, was es tut.
Ich entschuldige mich für den Codierungsfehler.....
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenEntschuldigung für mehrere Beiträge.
Aber wenn ich ein zweites Kriterium verwende als „ _ 0A“ dann kann ich stattdessen eine bestimmte Datei abrufen, wenn ich „0A“ verwende, wird dieses Kriterium ignoriert.
Ich bin mir sicher, dass mir etwas sehr Grundlegendes fehlt.
Danke,
Chintan
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenEigentlich, wenn ich unten verwende -
Wenn ( Enthält ( Dateien [ ich ] , „123“ ) > 0 & Enthält ( Dateien [ ich ] , „XY“ ) > Enthält ( Dateien [ ich ] , „123“ ) ,
Ich kann ein Ergebnis erzielen. aber o Ein Problem, das ich gefunden habe, ist, wenn die Dateinamen -
1. HELLOABC_0A_H2ABC
2. HELLOABC_1D_H2ABC
Wenn ich „ABC“ und „0A“ auswähle, erhalte ich alle Dateien mit „ABC“, während ich bei Verwendung von „ABC“ und „1D“ eine bestimmte Datei erhalte, die beide Zeichen im Dateinamen enthält.
Wie wird unterschieden? 0 A vs 1 D? Beide sollten als Zeichenfolge behandelt werden.
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenUps, mein Fehler, es sollte lauten:
If( Contains( files[i], "123" ) > 0 & Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten Dateinamentxnelson: Vielen Dank für die schnelle Antwort.
Aus irgendeinem Grund werden immer noch alle Dateien mit „123“ zurückgegeben und „XY“ wird nicht als Suchkriterium berücksichtigt.
Hat es etwas mit mehreren Delims zu tun?
Betreff: Platzhalterauswahl von Zeichen aus einem bestimmten DateinamenIf( Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)