删除perl字符串中所有前导零的最优雅,最快的方法

Pau*_*kov 1 string perl substring

我编写了rmlz用于修剪字符串中所有前导零的函数。

# remove all leading zeroes from string
use strict;
use warnings;
use feature 'say';

sub rmlz {
  my ( $str ) = @_;
  if ( $str =~ /^(.[0])/ ) {
    return substr( $str, length($1));
  }
  return $str;
}

say rmlz('0050625'); # must return 50625
Run Code Online (Sandbox Code Playgroud)

有没有最优雅,最清晰的方法来重写此代码?还是regexp + length + substr是最好的选择?

yst*_*sth 6

一个简单的替换将删除前导零:

$str =~ s/^0+(?=[0-9])//;
Run Code Online (Sandbox Code Playgroud)

这将删除尽可能多的零,同时仍保留至少一位数字。需要后面的约束来防止“ 0”变为“”。