從給定文件名中選擇字符的通配符你好,
我正在嘗試從文件名中查找某些字符並選擇這些文件。
例如:文件名:HELLO123_MT_XYZ,
代碼:
為了(我= 1 ,我<= N 項(文件) ,我++,
如果(包含(文件[我] , “公噸” ) , //根據文件名輸入搜索條件
打開(文件[我] ) ;
)
) ;
上面的代碼與“MT”將拉取所有以 MT 為字符的文件名。 但是我如何選擇帶有通配符的文件?例如:*123*XY*
回复:從給定文件名中選擇字符的通配符感謝您的回复。
我沒有註意到我在文件名中重複了兩次相同的字符,因此它拉動了整堆文件。
我限制了文件名的字符串長度,現在我可以根據搜索條件獲取文件。
非常感謝你們!
回复:從給定文件名中選擇字符的通配符正則表達式可以提供更通用的解決方案。
// 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));
);回复:從給定文件名中選擇字符的通配符我對你的條目感到困惑。 首先,讓我們解決代碼問題。 我最初在代碼中犯了一個錯誤。 然後我又搞砸了。 您需要使用的代碼是:
<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] 的當前值),查找第二個參數“123”的值。 如果找到,它將返回找到它的位置。 因此,第一次使用 Contains() 確保存在值“123”。 第二次使用確保存在“XY”值,第三次比較確保在“123”值之後找到“XY”。 這就是它所做的一切。
對於編碼錯誤,我深表歉意......
回复:從給定文件名中選擇字符的通配符抱歉有多個帖子。
但如果我使用第二個標準作為“ _ 0A”然後我可以獲取特定文件,而不是當我使用“0A”時它會忽略這個標準。
我確信我缺少一些非常基本的條件。
謝謝,
金丹
回复:從給定文件名中選擇字符的通配符實際上,如果我使用下面 -
如果(包含(文件[我] , “123” ) > 0 &包含(文件[我] , “XY” ) >包含(文件[我] , “123” ) ,
我可以獲得結果。但是哦我發現的新問題是,如果文件名是 -
1.HELLOABC_0A_H2ABC
2.HELLOABC_1D_H2ABC
如果我選擇“ABC”和“0A”,那麼我會得到所有帶有“ABC”的文件,而如果我使用“ABC”和“1D”,那麼我會得到包含文件名中這兩個字符的特定文件。
它如何區分0甲 vs 1 D? 它們都應該被視為字符串。
回复:從給定文件名中選擇字符的通配符哎呀,我的錯誤,應該是:
If( Contains( files[i], "123" ) > 0 & Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)
回复:從給定文件名中選擇字符的通配符txnelson: 感謝您的及時回复。
由於某種原因,它仍然返回所有帶有“123”的文件,並且不將“XY”視為搜索條件。
它與多個定界符有什麼關係嗎?
回复:從給定文件名中選擇字符的通配符If( Contains( files[i], "123" ) > 0 & Contains( files[i], "XY" ) > Contains( files[i], "123" ),
Open( files[i] )
)