【问题标题】:What is the best way to insert a character into a string in Perl?在 Perl 中将字符插入字符串的最佳方法是什么?
【发布时间】:2014-09-04 16:07:28
【问题描述】:

在 Perl 的多个位置将字符插入字符串的最佳方法是什么?我有一个字符串,其中删除了所有非数字字符。之后,我想从末尾开始在第 4 位和第 8 位插入一个破折号。你猜对了,我正在修改所有输入的电话号码,使它们都具有相同的格式:XXX-XXX-XXXX

$number =~ s/[^0-9]//g;
substr($number, -4, 0, '-');
substr($number, -8, 0, '-');

是否有一个正则表达式可以在一行中执行上述代码?有没有我不知道的更高效的东西?

提前致谢!

【问题讨论】:

  • s/(\d{3})(\d{3})(\d{4})/$1-$2-$3/
  • 在允许的字符中你真的需要+吗?
  • @Miller 我猜不是。现在将编辑。谢谢!

标签: regex perl substr


【解决方案1】:

不确定性能,但unpack-and-join 也可以:

join( '-', unpack 'A3 A3 A4', $number )

【讨论】:

  • 快速基准测试表明,它的平均速度是正则表达式解决方案的两倍。 unpack 是固定宽度数据的王者。 :-)
【解决方案2】:

这也有效:

$number =~ s/(...)(...)(....)$/$1-$2-$3/

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 2013-05-13
    • 2014-10-20
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多