2012-10-15 4 views
0

명령 줄을 통해 사용자가 입력 한 문자를 포함하는 문자열 배열의 하위 문자열에만 어떻게 참여합니까?perl에서 두 개의 하위 문자열을 결합하는 방법

예를 들어 : $string 경우 "MALWCMRALPLCLALALCAWGPDPACAFVN"@array$string에서 'A'에서 모든 컷의 문자열이 포함되어 있습니다. 그런 다음 원래 문자열에서 'L'의 위치 3과 9 (명령 줄을 통해 사용자가 입력 한)에 들어있는 두 개의 하위 문자열을 결합 할 수 있습니까? , 당신이 할 수있는

답변

1

난 당신이 정확하게 할 의도,하지만 당신은 문자열의 배열에 가입 연결 연산자

$string3 = $string1 . $string2 ; 

을 사용하는 두 개의 문자열을 가입 모르겠어요

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

배열을 검색하여 배열 L을 포함하여 grep :

을 사용하여 검색 할 수 있습니다.

하고 가입 :

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

당연히, 당신이 명령 줄에서 변수를 사용하여 정규 표현식을 구성 할 수 있습니다 :

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

그렙의 패턴을 사용하면되는 당신이 L의이 원하는 배치 정의 할 수 있습니다 첫 번째 :

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

세 번째 해결 방법은 내가 찾고있는 것이지만 약간의 수정이 필요합니다. 난 단지 사용자 정의 위치 (Perl 명령 행을 통해 입력)에서 'L'을 포함하는 두 개의 하위 문자열을 검색해야하며 3과 9를 말한 다음 이들을 연결하려고합니다. – user1746090

+0

그런 다음 grep 패턴을 수정하십시오. 위의 예를 참조하십시오. 물론 명령 행에서 변수를 사용하여 정규 표현식을 구성 할 수 있습니다. – January

+0

코드를 사용해 보았습니다. 그러나 나는 ARGV [0]와 ARGV [1]의 주장을 잘못 해석한다고 생각합니다. 위의 코드는 부분 문자열에서 'L'의 위치를 ​​의미하지만 http://codepad.org/pRlC9eKT – user1746090

관련 문제