2014-03-12 44 views
0

我需要从我的perl程序中的给定字符串中提取子字符串。 字符串的形式为:在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

这应该是相当直接的。你有没有尝试访问? – devnull

回答

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