从给定文件名中选择字符的通配符你好,
我正在尝试从文件名中查找某些字符并选择这些文件。
例如:文件名: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] )
)