问题描述
我想知道是否有任何Perl函数充当substr
的逆函数。如果substr
选择了由坐标定义的字符串的一部分,则此函数将跳过该部分,而是捕获位于给定坐标旁的字符串部分。
可以使用substr
完成每个侧面所需的坐标,但是我想知道在这种情况下是否内置一些东西。
解决方法
最简单,最快的方法可能是使用四参数子字符串。
use strict;
use warnings;
use feature 'say';
my $orig = 'aaabbbccc';
my $middle = substr( $orig,3,3 );
substr( my $flanks = $orig,'/' );
say $orig; # aaabbbccc
say $middle; # bbb
say $flanks; # aaa/ccc
如果您不想在输出中使用斜杠,请使用substr( my $flanks = $orig,'' )
。
如果添加一些Perl逻辑,则可以使用substr()
处理。 substr()
可通过添加空字符串作为REPLACEMENT来删除部分字符串,如documentation所示:
substr EXPR,OFFSET,LENGTH,替换
例如,您可以执行以下操作:
my $org = "foo bar baz";
my $flank = $org;
my $mid = substr($flank,4,'');
print "Original: $org\nMid: $mid\nFlank: $flank\n";
将打印以下内容:
Original: foo bar baz
Mid: bar
Flank: foo baz