-3

我有一个字符串,就像ascv/zxc/zxc-asd/zx.java现在我希望在第二次剪切字符串 /并将字符串值作为ascv/zxc.

同样,我将输入特殊字符类型及其级别。根据输入,它应该剪切字符串。例如,从第一次匹配字符开始-;或第三场比赛/

非常感谢任何帮助。

4

2 回答 2

1

这应该可以帮助你。

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
于 2013-06-13T11:52:58.160 回答
0

怎么样:

my $str = 'ascv/zxc/zxc-asd/zx.java';
$str =~ s#^([^/]+/[^/]+).*#$1#;
say $str;

输出:

ascv/zxc
于 2013-06-13T07:25:03.583 回答