我需要从perl程序中的给定字符串中提取子字符串。 字符串的格式为:
<PrefixString>_<MyString>_<SuffixString>.pdf
示例:abcd_ThisIsWhatIWant_xyz.pdf
我需要提取“ThisIsWhatIWant”
有人可以帮我吗?
谢谢!
这是我正在尝试的子程序:
sub extractString{
my ($fileName) = @_;
my $offset = 2;
my $delimeter = '_';
my $fileNameLen = index($fileName, $delimeter, $offset);
my $extractedFileName = substr($fileName, 8, $fileNameLen-1);
return $extractedFileName;
}
答案 0 :(得分:4)
您可以使用split
或正则表达式。这个简短的计划显示了两种选择。
use strict;
use warnings;
my $filename = 'abcd_ThisIsWhatIWant_xyz.pdf';
my ($substring1) = $filename =~ /_([^_]*)_/;
print $substring1, "\n";
my $substring2 = (split /_/, $filename)[1];
print $substring2, "\n";
<强>输出强>
ThisIsWhatIWant
ThisIsWhatIWant