Perl在另一个字符串的中间添加字符串

时间:2017-01-26 21:24:10

标签: regex perl

在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";
}

2 个答案:

答案 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)

由于您并不真正需要正则表达式模式匹配的全部功能,因此您可以使用indexsubstr的第四个参数在连字符后立即插入一些字符:

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