2012-10-15 74 views
0

如何僅連接包含用戶通過命令行輸入位置的字符的字符串數組的子串?如何在perl中連接兩個子字符串

例如:如果$string"MALWCMRALPLCLALALCAWGPDPACAFVN"@array包含$string'A'每切子。那麼怎麼能在原始字符串中加入位置3和9(由用戶通過命令行輸入)中包含'L'的兩個子字符串?

回答

1

我不知道你正是打算這樣做,而是你一起使用連接運算符

$string3 = $string1 . $string2 ; 

加入字符串數組兩個字符串,你可以做

$string3 = join("", @stringarr) ; 

您可以使用grep搜索包含L的字符串:

@selstrings = grep(/L/, @strarray) ; 

參加吧:

$string3 = join("", @selstrings) ; 

使用grep的模式,您可以定義在哪個位置,你希望L的是:

@selstrings = grep(/^(.{2}|.{8})L/, @starray) ; 

當然,你可以構建使用命令行變量的正則表達式第一:

$regex = "^(.{" . $ARGV[0] . "}|.{" . $ARGV[1] . "})L" ; 
@selstrings = grep(/$regex/, @starray) ; 
+0

你的第三種解決方案是我所尋找的,但略有修改。我只需要搜索那些在用戶定義的位置(通過Perl命令行輸入)中包含'L'的兩個子字符串,比如3和9,然後想要連接它們。 – user1746090

+0

然後相應修改grep模式;看上面的例子。當然,你可以首先使用命令行中的變量構造正則表達式。 – January

+0

我試過你的代碼。但是我認爲我在爭論ARGV [0]和ARGV [1]時會出錯。看看http://codepad.org/pRlC9eKT – user1746090