指定されたファイル名からの文字のワイルドカード選択こんにちは、
ファイル名から特定の文字を検索して、それらのファイルを選択しようとしています。
例: ファイル名: HELLO123_MT_XYZ、
コード:
ために(私= 1 、私<= N 個のアイテム(ファイル) 、私++、
もしも(含まれています(ファイル[私] 、 「MT」 ) 、 //ファイル名から検索条件を入力
開ける(ファイル[私】 ) ;
)
) ;
上記のコード「MT」は、MT を文字として含むすべてのファイル名を取得します。 しかし、ワイルドカードを使用してファイルを選択するにはどうすればよいでしょうか?例: *123*XY*
Re: 指定されたファイル名からの文字のワイルドカード選択ご回答ありがとうございます。
ファイル名に同じ文字が 2 回繰り返されているため、ファイル全体がプルされていることに気づきませんでした。
ファイル名の文字列の長さを制限したので、検索条件に基づいてファイルを取得できるようになりました。
みなさん、本当にありがとうございました!
Re: 指定されたファイル名からの文字のワイルドカード選択正規表現を使用すると、より一般的な解決策が得られます。
// 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: 指定されたファイル名からの文字のワイルドカード選択私はあなたのエントリーに混乱しています。 まず、コードの問題を解決しましょう。 最初にコードに誤りがありました。 そしてまた失敗してしまいました。 使用する必要があるコードは次のとおりです。
<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>
このコードには魔法のようなものは何もありません。 説明しましょう。 Contains() 関数は、リテラル文字列 (この場合は Files[i] の現在の値) を調べて、2 番目の引数 "123" の値を探します。 見つかった場合は、見つかった位置を返します。 したがって、Contains() を最初に使用すると、値「123」が存在することが確認されます。 2 回目の使用では、値「XY」があることを確認し、3 回目の比較では、値「123」の後に「XY」が見つかることを確認します。 やっていることはそれだけです。
コーディングミスをお詫び申し上げます....
Re: 指定されたファイル名からの文字のワイルドカード選択複数の投稿申し訳ありません。
しかし、2番目の基準を「 _ 0A」を使用すると、代わりに特定のファイルを取得できます。「0A」を使用すると、この基準は無視されます。
非常に基本的な条件が欠けていると確信しています。
ありがとう、
ちんたん
Re: 指定されたファイル名からの文字のワイルドカード選択実際に以下を使用すると -
もしも(含まれています(ファイル[私】 、 「123」 ) > 0 &含まれています(ファイル[私] 、 「XY」 ) >含まれています(ファイル[私] 、 「123」 ) 、
結果は出せるんです。でも、ああ私が見つけた問題は、ファイル名が - の場合です。
1.HELLOABC_0A_H2ABC
2.HELLOABC_1D_H2ABC
「ABC」と「0A」を選択すると、「ABC」を含むすべてのファイルが取得されますが、「ABC」と「1D」を使用すると、ファイル名に両方の文字が含まれる特定のファイルが取得されます。
どうやって区別するのですか0対1え? どちらも文字列として扱う必要があります。
Re: 指定されたファイル名からの文字のワイルドカード選択おっと、私の間違いです。次のようになります。
If( Contains( files[i], "123" ) > 0 & Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)
Re: 指定されたファイル名からの文字のワイルドカード選択txnelson: 早速のご返答ありがとうございます。
何らかの理由で、依然として「123」を持つすべてのファイルが返され、「XY」を検索条件として考慮しません。
複数の delim と何か関係がありますか?
Re: 指定されたファイル名からの文字のワイルドカード選択If( Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)