gpt4 book ai didi

regex - 寻找一种将许多文件扩展名搜索到文件名字符串中的优雅方法

转载 作者:行者123 更新时间:2023-12-01 08:15:34 26 4
gpt4 key购买 nike

我想知道一个文件是否有一个特定的文件扩展名,在扩展名列表中选择。

我最初的想法是:

my $file = "filename.zip";
my @allowedExts = ( '.zip', '.tar.gz', '.tar.bz2' );

my $found = 0;
foreach $ext (@allowedExts) {
if (index($file, $ext) != -1) {
$found = 1;
last;
}
}

print "found" if ($found);

有更简单的方法吗?

最佳答案

如果你真的有很多扩展(不仅仅是三个),通过先找到扩展然后检查哈希来避免循环:

my $file = "filename.zip";
my @allowedExts = ( '.zip', '.tar.gz', '.tar.bz2' );

my %allowedExts;
@allowedExts{@allowedExts} = ();
my (undef, $ext) = split /(?=\.)/, $file, 2;

my $found = $ext && exists $allowedExts{$ext};

以上将从第一个 . 开始处理文件名中的所有内容;如果您在文件名之前. 您想要查找的扩展名,您可以将所有扩展名组合成一个正则表达式:

my $file = "filename.zip";
my @allowedExts = ( '.zip', '.tar.gz', '.tar.bz2' );

my $found = $filename =~ ( join( '|', map quotemeta, @allowedExts ) . '\z' );

关于regex - 寻找一种将许多文件扩展名搜索到文件名字符串中的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com