2014-03-12 68 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