나는 ascv/zxc/zxc-asd/zx.java
과 같은 문자열을 가지고 있습니다. 이제 두 번째 문자열을 자르고 /
문자열을 자르고 ascv/zxc
이라는 문자열 값을 얻길 원합니다.문자열에 일치하지 않는 패턴 일치하는 펄 패턴 일치
마찬가지로 특수 문자 유형 및 해당 레벨을 입력합니다. 입력에 따라 문자열을 잘라야합니다. 예 : 문자 첫 경기에서 -
; 또는 세 번째 경기가 /
매우 도움이 되었습니까?
나는 ascv/zxc/zxc-asd/zx.java
과 같은 문자열을 가지고 있습니다. 이제 두 번째 문자열을 자르고 /
문자열을 자르고 ascv/zxc
이라는 문자열 값을 얻길 원합니다.문자열에 일치하지 않는 패턴 일치하는 펄 패턴 일치
마찬가지로 특수 문자 유형 및 해당 레벨을 입력합니다. 입력에 따라 문자열을 잘라야합니다. 예 : 문자 첫 경기에서 -
; 또는 세 번째 경기가 /
매우 도움이 되었습니까?
방법에 대해 :
my $str = 'ascv/zxc/zxc-asd/zx.java';
$str =~ s#^([^/]+/[^/]+).*#$1#;
say $str;
출력 :
ascv/zxc
고마워요.하지만 일치해야하는 레벨까지 달라질 수 있습니다. 첫 번째 특수 문자 (/)와 일치하거나 4 번째와 일치 할 수 있습니다. argument.instance - 3 번째 "/"일치 전에 문자열을 자르고 5 번째 전에 문자열을 자릅니다. "/"의 일치 – usercm
이 당신을 도움이 될 것입니다.
use strict;
use warnings;
use 5.010;
my $str = 'ascv/zxc/zxc-asd/zx.java';
say truncate_at($str, '/', 1);
say truncate_at($str, '/', 2);
say truncate_at($str, '/', 3);
say truncate_at($str, '/', 4);
say truncate_at($str, '-', 1);
sub truncate_at {
my ($str, $sep, $n) = @_;
my @offsets;
push @offsets, $-[0] while $str =~ m|\Q$sep|g;
substr($str, $offsets[$n-1]) = '' if $n <= @offsets;
$str;
}
출력
ascv
ascv/zxc
ascv/zxc/zxc-asd
ascv/zxc/zxc-asd/zx.java
ascv/zxc/zxc
는 SO 코드 작성 서비스 아니다. 왜 노력했는지, 왜 효과가 없는지 공유하고 싶습니까? [묻는 방법] (http://stackoverflow.com/questions/how-to-ask)을 참조하십시오. – chrsblck
나는 시도했다 : - $ a = "ascv/zxc/zxc-asd/zx.java", ($ str1, $ str2) = split (/ \ //, $ a); 출력은 ascv/zxc가 아님 ascv, zxc – usercm
이렇게하려면 여러 가지 방법이 있는데, 'split'이 가장 간단합니다. 당신의 코멘트 편집을 보았습니다 : 다시 결합하기 위해'join'을 사용하십시오. – cdarke