在Perl中,转换此字符串的最佳方式是什么:
7705554200-4299
到
7705554200-7705554299
我知道如何抓住前6位但不知道如何在连字符后插入它们。
#!/usr/bin/perl
use strict;
use warnings;
my $num = '7705554200-4299';
# Check to see number is a range
if ($num =~ /-/)
{
# Pull area code and exchange
my $extract = substr($num, 0, 6);
print "Area code + exchange: $extract\n";
}
答案 0 :(得分:3)
想出来
#!/usr/bin/perl
my $num = '7704814200-4299';
# Check to see if it is a range
if ($num =~ /-/)
{
# Pull area code and exchange
my $extract = substr($num, 0, 6);
print "Extracted this: $extract\n";
$num =~ s/-/-$extract/;
print $num;
}
答案 1 :(得分:1)
由于您并不真正需要正则表达式模式匹配的全部功能,因此您可以使用index
和substr
的第四个参数在连字符后立即插入一些字符:
use strict;
use warnings;
my $num = '7705554200-4299';
substr($num, index($num, '-') + 1, 0, substr($num, 0, 6));
print "$num\n";
您也可以使用substr
作为左值,但就个人而言,我发现该版本更为迟钝:
substr($num, index($num, '-') + 1, 0) = substr($num, 0, 6);
结果:
7705554200-7705554299