我有一个字符串,就像ascv/zxc/zxc-asd/zx.java
现在我希望在第二次剪切字符串 /
并将字符串值作为ascv/zxc
.
同样,我将输入特殊字符类型及其级别。根据输入,它应该剪切字符串。例如,从第一次匹配字符开始-
;或第三场比赛/
非常感谢任何帮助。
我有一个字符串,就像ascv/zxc/zxc-asd/zx.java
现在我希望在第二次剪切字符串 /
并将字符串值作为ascv/zxc
.
同样,我将输入特殊字符类型及其级别。根据输入,它应该剪切字符串。例如,从第一次匹配字符开始-
;或第三场比赛/
非常感谢任何帮助。
这应该可以帮助你。
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
怎么样:
my $str = 'ascv/zxc/zxc-asd/zx.java';
$str =~ s#^([^/]+/[^/]+).*#$1#;
say $str;
输出:
ascv/zxc