首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除前导零,但不是全部零

删除前导零,但不是全部零
EN

Stack Overflow用户
提问于 2011-04-15 22:45:45
回答 7查看 34K关注 0票数 15

如果值只包含零,我如何删除所有前导零,但保留最后一个零?

例如:

代码语言:javascript
复制
my $number = "0000";

我想要:

代码语言:javascript
复制
my $number = "0";

我试过了:

代码语言:javascript
复制
$number =~ s/^0*//; 

但这当然删除了本例中的所有零。

EN

回答 7

Stack Overflow用户

发布于 2011-04-15 22:55:15

这应该是可行的:

代码语言:javascript
复制
$number =~ s/^0*(\d+)$/$1/;

0    -> 0
0000 -> 0
0001 -> 1

编辑:事实证明这有点太复杂了。这也应该是可行的:

代码语言:javascript
复制
$number =~ s/0*(\d+)/$1/;

但我不确定哪个更好,这取决于用例。

一定要看看Oesor的答案:它也很不错,不涉及正则表达式。

票数 22
EN

Stack Overflow用户

发布于 2011-04-15 23:07:24

这不需要作为正则表达式来完成。

代码语言:javascript
复制
my @nums = qw/ 00000 000 000001 002 00000005 00000064 /;
@nums = map { $_ + 0 } @nums;
票数 12
EN

Stack Overflow用户

发布于 2011-04-15 23:31:14

代码语言:javascript
复制
$number =~ s/^0+(?=\d)//;

正向前视确保至少剩下一个数字,使用+而不是*意味着如果没有前导零,则跳过替换。

如果您正在尝试标准化单个字符串中的数字组,只需使用\b而不是^,并进行全局替换:

代码语言:javascript
复制
my $data = "0225 0000 030";
$data =~ s/\b0+(?=\d)//g;
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5678455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档